From a558d185272e619fc8f2c75e3eca9f3161a6b45b Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 22 Jun 2015 18:50:16 +0200 Subject: [PATCH] Revert "filesystems: we aren't BeOS, so we can safely use -O2(+)." This reverts commit ae495ca8fe9e48dea982cf522c5c54c56dffb9fd. My system volume was mysteriously corrupted while booting or shutting down today, enough to make it unbootable and KDL on attempt to mount it. I'm assuming our gcc2 still isn't safe with regard to -O2 optimization of filesystems, and revert this, until proven wrong (eg. by running test suites and FS stress tests and finding no issues. Axel comented on the commit saying it probably was not a good idea, but no action was taken. Should we setup a better commit review system? --- src/add-ons/kernel/file_systems/bfs/Jamfile | 5 +++++ .../file_systems/udf/drive_setup_addon/Jamfile | 10 ++++++++++ .../add-ons/kernel/file_systems/bfs/r5/Jamfile | 11 +++++++++++ .../add-ons/kernel/file_systems/udf/r5/Jamfile | 13 +++++++++++++ .../file_systems/udf/r5/drive_setup_addon/Jamfile | 10 ++++++++++ .../kernel/file_systems/userlandfs/bfs/Jamfile | 5 +++++ src/tools/bfs_shell/Jamfile | 5 +++++ 7 files changed, 59 insertions(+) diff --git a/src/add-ons/kernel/file_systems/bfs/Jamfile b/src/add-ons/kernel/file_systems/bfs/Jamfile index b8842b9fab..8d78cf7bfd 100644 --- a/src/add-ons/kernel/file_systems/bfs/Jamfile +++ b/src/add-ons/kernel/file_systems/bfs/Jamfile @@ -7,6 +7,11 @@ SubDir HAIKU_TOP src add-ons kernel file_systems bfs ; #BFS_BIG_ENDIAN_ONLY ; + if $(DEBUG) = 0 { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; + } + defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) ; SubDirC++Flags $(defines) ; diff --git a/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile b/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile index 40fc156d84..329a3ab981 100644 --- a/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile +++ b/src/add-ons/kernel/file_systems/udf/drive_setup_addon/Jamfile @@ -1,5 +1,8 @@ SubDir HAIKU_TOP src add-ons kernel file_systems udf drive_setup_addon ; +# save original optimization level +oldOPTIM = $(OPTIM) ; + # set some additional defines { local defines = @@ -12,6 +15,9 @@ SubDir HAIKU_TOP src add-ons kernel file_systems udf drive_setup_addon ; if $(DEBUG) { #defines += DEBUG ; + } else { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; } defines = [ FDefines $(defines) ] ; @@ -49,3 +55,7 @@ actions ignore InstallUDFDS } InstallUDFDS install : i-udf-ds ; + +# restore original optimization level +OPTIM = $(oldOPTIM) ; + diff --git a/src/tests/add-ons/kernel/file_systems/bfs/r5/Jamfile b/src/tests/add-ons/kernel/file_systems/bfs/r5/Jamfile index 882568e2ff..7a22934a15 100644 --- a/src/tests/add-ons/kernel/file_systems/bfs/r5/Jamfile +++ b/src/tests/add-ons/kernel/file_systems/bfs/r5/Jamfile @@ -2,6 +2,9 @@ SubDir HAIKU_TOP src tests add-ons kernel file_systems bfs r5 ; SetSubDirSupportedPlatformsBeOSCompatible ; +# save original optimization level +oldOPTIM = $(OPTIM) ; + # set some additional defines { local defines = @@ -24,6 +27,11 @@ SetSubDirSupportedPlatformsBeOSCompatible ; bfsAddOnName = obfs ; } + if $(DEBUG) = 0 { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; + } + defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) ; SubDirC++Flags $(defines) -fno-rtti ; @@ -67,3 +75,6 @@ actions ignore InstallBFS } InstallBFS install : obfs ; + +# restore original optimization level +OPTIM = $(oldOPTIM) ; diff --git a/src/tests/add-ons/kernel/file_systems/udf/r5/Jamfile b/src/tests/add-ons/kernel/file_systems/udf/r5/Jamfile index 53c24abf51..d94a504fa7 100644 --- a/src/tests/add-ons/kernel/file_systems/udf/r5/Jamfile +++ b/src/tests/add-ons/kernel/file_systems/udf/r5/Jamfile @@ -3,6 +3,9 @@ SubDir HAIKU_TOP src tests add-ons kernel file_systems udf r5 ; SetSubDirSupportedPlatformsBeOSCompatible ; SubDirC++Flags -fno-rtti ; +# save original optimization level +oldOPTIM = $(OPTIM) ; + # set some additional defines { local defines = @@ -11,6 +14,11 @@ SubDirC++Flags -fno-rtti ; defines += COMPILE_FOR_R5 ; + if $(DEBUG) = 0 { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; + } + defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) ; SubDirC++Flags $(defines) ; @@ -54,3 +62,8 @@ actions ignore InstallUDF } InstallUDF install : udf ; + +# restore original optimization level +OPTIM = $(oldOPTIM) ; + +SubInclude HAIKU_TOP src tests add-ons kernel file_systems udf r5 drive_setup_addon ; diff --git a/src/tests/add-ons/kernel/file_systems/udf/r5/drive_setup_addon/Jamfile b/src/tests/add-ons/kernel/file_systems/udf/r5/drive_setup_addon/Jamfile index e8829295c8..8289920b43 100644 --- a/src/tests/add-ons/kernel/file_systems/udf/r5/drive_setup_addon/Jamfile +++ b/src/tests/add-ons/kernel/file_systems/udf/r5/drive_setup_addon/Jamfile @@ -2,6 +2,9 @@ SubDir HAIKU_TOP src tests add-ons kernel file_systems udf r5 drive_setup_addon SetSubDirSupportedPlatformsBeOSCompatible ; +# save original optimization level +oldOPTIM = $(OPTIM) ; + # set some additional defines { local defines = @@ -14,6 +17,9 @@ SetSubDirSupportedPlatformsBeOSCompatible ; if $(DEBUG) { #defines += DEBUG ; + } else { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; } defines = [ FDefines $(defines) ] ; @@ -51,3 +57,7 @@ actions ignore InstallUDFDS } InstallUDFDS install : i-udf-ds ; + +# restore original optimization level +OPTIM = $(oldOPTIM) ; + diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/bfs/Jamfile b/src/tests/add-ons/kernel/file_systems/userlandfs/bfs/Jamfile index 28128f82c8..b42a2d0349 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/bfs/Jamfile +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/bfs/Jamfile @@ -11,6 +11,11 @@ SEARCH_SOURCE += $(bfsTop) ; USER=1 ; + if $(DEBUG) = 0 { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; + } + defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) ; SubDirC++Flags $(defines) -fno-rtti ; diff --git a/src/tools/bfs_shell/Jamfile b/src/tools/bfs_shell/Jamfile index 0c02396e7d..bd8fb28849 100644 --- a/src/tools/bfs_shell/Jamfile +++ b/src/tools/bfs_shell/Jamfile @@ -12,6 +12,11 @@ DEFINES += HAIKU_BUILD_COMPATIBILITY_H ; FS_SHELL ; + if $(DEBUG) = 0 { + # the gcc on BeOS doesn't compile BFS correctly with -O2 or more + OPTIM = -O1 ; + } + defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) -Wno-multichar ; SubDirC++Flags $(defines) -Wno-multichar -fno-rtti ;