diff options
author | Eric Sandeen <sandeen@fedoraproject.org> | 2010-01-23 04:42:45 +0000 |
---|---|---|
committer | Eric Sandeen <sandeen@fedoraproject.org> | 2010-01-23 04:42:45 +0000 |
commit | cc5e88984914b253cedaf3686f1a5c59baad8c98 (patch) | |
tree | 283f1bfd85e192de5b42c8535ae51defb0f497cd | |
parent | a12de76e3b838d44866078f36fa5a51387826582 (diff) | |
download | e2fsprogs-1_41_9-1_fc11.tar.gz e2fsprogs-1_41_9-1_fc11.tar.xz e2fsprogs-1_41_9-1_fc11.zip |
and... add the new patches.e2fsprogs-1_41_9-1_fc11
-rw-r--r-- | e2fsprogs-1.41.9-24hr-fsck-grace.patch | 199 | ||||
-rw-r--r-- | e2fsprogs-resize-minimum-fix.patch | 51 |
2 files changed, 250 insertions, 0 deletions
diff --git a/e2fsprogs-1.41.9-24hr-fsck-grace.patch b/e2fsprogs-1.41.9-24hr-fsck-grace.patch new file mode 100644 index 0000000..e5723b1 --- /dev/null +++ b/e2fsprogs-1.41.9-24hr-fsck-grace.patch @@ -0,0 +1,199 @@ +From ba5131f6d48eded504e84c2a8ffc8131df8a512e Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o <tytso@mit.edu> +Date: Fri, 16 Oct 2009 20:46:45 -0400 +Subject: [PATCH] e2fsck: Accept superblock times to be fudged by up to 24 hours by default + +Unfortunately, due to Windows' unfortunate design decision to +configure the hardware clock to tick localtime, instead of the more +proper and less error-prone UTC time, many users end up in the +situation where the system clock is incorrectly set at the time when +e2fsck is run. + +Historically this was usually due to some distributions having buggy +init scripts and/or installers that didn't correctly detect this case +and take appropriate countermeasures. However, it's still possible, +despite the best efforts of init script and installer authors to not +be able to detect this misconfiguration, usually due to a buggy or +misconfigured virtualization manager or the installer not having +access to a network time server during the installation process. So +by default, we allow the superblock times to be fudged by up to 24 +hours. This can be disabled by setting options.accept_time_fudge to +the boolean value of false in e2fsck.conf. The old +options.buggy_init_scripts is left for backwards compatibility. + +Since we are now accepting the 24 hour time fudge by default, there is +no longer a need to install an Ubuntu-specific e2fsck.conf file, so we +can remove it. + +Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> +--- + debian/rules | 6 ------ + e2fsck/e2fsck.conf.5.in | 36 ++++++++++++++++++++++-------------- + e2fsck/e2fsck.conf.ubuntu | 2 -- + e2fsck/problem.c | 4 ++-- + e2fsck/super.c | 42 ++++++++++++++++++++++++------------------ + 5 files changed, 48 insertions(+), 42 deletions(-) + delete mode 100644 e2fsck/e2fsck.conf.ubuntu + +diff --git a/debian/rules b/debian/rules +index f62e86f..f658bd1 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -445,12 +445,6 @@ endif + $(INSTALL) -p -m 0644 debugfs/debug_cmds.ct \ + ${debdir}/ss-dev/usr/share/doc/libss${SS_SOVERSION}/examples + +- if test -f /etc/lsb-release && \ +- grep -q DISTRIB_ID=Ubuntu /etc/lsb-release; then \ +- $(INSTALL) -p -m 0644 e2fsck/e2fsck.conf.ubuntu \ +- ${debdir}/e2fsprogs/etc/e2fsck.conf; \ +- fi +- + dh_installinfo -pcomerr-dev ${stdbuilddir}/lib/et/com_err.info + dh_installinfo -pe2fslibs-dev ${stdbuilddir}/doc/libext2fs.info + +diff --git a/e2fsck/e2fsck.conf.5.in b/e2fsck/e2fsck.conf.5.in +index 6638a39..a5021bd 100644 +--- a/e2fsck/e2fsck.conf.5.in ++++ b/e2fsck/e2fsck.conf.5.in +@@ -87,19 +87,27 @@ interrupts e2fsck using ^C, and the filesystem is not explicitly flagged + as containing errors, e2fsck will exit with an exit status of 0 instead + of 32. This setting defaults to false. + .TP +-.I buggy_init_scripts +-Some buggy distributions (such as Ubuntu) have init scripts and/or +-installers which fail to correctly set the system clock before running +-e2fsck and/or formatting the filesystem initially. Normally this +-happens because the hardware clock is ticking localtime, instead of the +-more proper and less error-prone UTC time. So while the kernel is +-booting, the system time (which in Linux systems always ticks in UTC +-time) is set from the hardware clock, but since the hardware clock is +-ticking localtime, the system time is incorrect. Unfortunately, some +-buggy distributions do not correct this before running e2fsck. If this +-option is set to a boolean value of true, we attempt to work around this +-situation by allowing the superblock last write time, last mount time, +-and last check time to be in the future by up to 24 hours. ++.I accept_time_fudge ++Unfortunately, due to Windows' unfortunate design decision ++to configure the hardware clock to tick localtime, instead ++of the more proper and less error-prone UTC time, many ++users end up in the situation where the system clock is ++incorrectly set at the time when e2fsck is run. ++.IP ++Historically this was usually due to some distributions ++having buggy init scripts and/or installers that didn't ++correctly detect this case and take appropriate ++countermeasures. However, it's still possible, despite the ++best efforts of init script and installer authors to not be ++able to detect this misconfiguration, usually due to a ++buggy or misconfigured virtualization manager or the ++installer not having access to a network time server ++during the installation process. So by default, we allow ++the superblock times to be fudged by up to 24 hours. ++This can be disabled by setting ++.I accept_time_fudge ++to the ++boolean value of false. This setting defaults to true. + .TP + .I clear_test_fs_flag + This boolean relation controls whether or not +@@ -111,7 +119,7 @@ defaults to true. + .I defer_check_on_battery + This boolean relation controls whether or not the interval between + filesystem checks (either based on time or number of mounts) should +-be doubled if the system is running on battery. It defaults to ++be doubled if the system is running on battery. This setting defaults to + true. + .TP + .I indexed_dir_slack_percentage +diff --git a/e2fsck/e2fsck.conf.ubuntu b/e2fsck/e2fsck.conf.ubuntu +deleted file mode 100644 +index 49d6d19..0000000 +--- a/e2fsck/e2fsck.conf.ubuntu ++++ /dev/null +@@ -1,2 +0,0 @@ +-[options] +- buggy_init_scripts = 1 +diff --git a/e2fsck/problem.c b/e2fsck/problem.c +index 540ac91..a713f1b 100644 +--- a/e2fsck/problem.c ++++ b/e2fsck/problem.c +@@ -388,13 +388,13 @@ static struct e2fsck_problem problem_table[] = { + /* Last mount time is in the future (fudged) */ + { PR_0_FUTURE_SB_LAST_MOUNT_FUDGED, + N_("@S last mount time is in the future.\n\t(by less than a day, " +- "probably due to buggy init scripts) "), ++ "probably due to the hardware clock being incorrectly set) "), + PROMPT_FIX, PR_PREEN_OK | PR_NO_OK }, + + /* Last write time is in the future (fudged) */ + { PR_0_FUTURE_SB_LAST_WRITE_FUDGED, + N_("@S last write time is in the future.\n\t(by less than a day, " +- "probably due to buggy init scripts). "), ++ "probably due to the hardware clock being incorrectly set). "), + PROMPT_FIX, PR_PREEN_OK | PR_NO_OK }, + + /* Block group checksum (latch question) is invalid. */ +diff --git a/e2fsck/super.c b/e2fsck/super.c +index c946664..951f6db 100644 +--- a/e2fsck/super.c ++++ b/e2fsck/super.c +@@ -463,7 +463,7 @@ void check_super_block(e2fsck_t ctx) + int inodes_per_block; + int ipg_max; + int inode_size; +- int buggy_init_scripts; ++ int accept_time_fudge; + dgrp_t i; + blk_t should_be; + struct problem_context pctx; +@@ -795,25 +795,31 @@ void check_super_block(e2fsck_t ctx) + } + + /* +- * Some buggy distributions (such as Ubuntu) have init scripts +- * and/or installers which fail to correctly set the system +- * clock before running e2fsck and/or formatting the +- * filesystem initially. Normally this happens because the +- * hardware clock is ticking localtime, instead of the more +- * proper and less error-prone UTC time. So while the kernel +- * is booting, the system time (which in Linux systems always +- * ticks in UTC time) is set from the hardware clock, but +- * since the hardware clock is ticking localtime, the system +- * time is incorrect. Unfortunately, some buggy distributions +- * do not correct this before running e2fsck. If this option +- * is set to a boolean value of true, we attempt to work +- * around this situation by allowing the superblock last write +- * time, last mount time, and last check time to be in the +- * future by up to 24 hours. ++ * Unfortunately, due to Windows' unfortunate design decision ++ * to configure the hardware clock to tick localtime, instead ++ * of the more proper and less error-prone UTC time, many ++ * users end up in the situation where the system clock is ++ * incorrectly set at the time when e2fsck is run. ++ * ++ * Historically this was usually due to some distributions ++ * having buggy init scripts and/or installers that didn't ++ * correctly detect this case and take appropriate ++ * countermeasures. However, it's still possible, despite the ++ * best efforts of init script and installer authors to not be ++ * able to detect this misconfiguration, usually due to a ++ * buggy or misconfigured virtualization manager or the ++ * installer not having access to a network time server during ++ * the installation process. So by default, we allow the ++ * superblock times to be fudged by up to 24 hours. This can ++ * be disabled by setting options.accept_time_fudge to the ++ * boolean value of false in e2fsck.conf. We also support ++ * options.buggy_init_scripts for backwards compatibility. + */ ++ profile_get_boolean(ctx->profile, "options", "accept_time_fudge", ++ 0, 1, &accept_time_fudge); + profile_get_boolean(ctx->profile, "options", "buggy_init_scripts", +- 0, 0, &buggy_init_scripts); +- ctx->time_fudge = buggy_init_scripts ? 86400 : 0; ++ 0, accept_time_fudge, &accept_time_fudge); ++ ctx->time_fudge = accept_time_fudge ? 86400 : 0; + + /* + * Check to see if the superblock last mount time or last +-- 1.6.5.104.g2567b.dirty diff --git a/e2fsprogs-resize-minimum-fix.patch b/e2fsprogs-resize-minimum-fix.patch new file mode 100644 index 0000000..179ebfe --- /dev/null +++ b/e2fsprogs-resize-minimum-fix.patch @@ -0,0 +1,51 @@ +--- + resize/resize2fs.c | 20 +++++++++++++++++--- + 1 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/resize/resize2fs.c b/resize/resize2fs.c +index c0b00b6..648e1f9 100644 +--- a/resize/resize2fs.c ++++ b/resize/resize2fs.c +@@ -1900,6 +1900,8 @@ blk_t calculate_minimum_resize_size(ext2_filsys fs) + blk_t inode_count, blks_needed, groups, data_blocks; + blk_t grp, data_needed, last_start; + int overhead = 0, num_of_superblocks = 0; ++ int extra_groups = 0; ++ int flexbg_size = 1 << fs->super->s_log_groups_per_flex; + + /* + * first figure out how many group descriptors we need to +@@ -1934,11 +1936,9 @@ blk_t calculate_minimum_resize_size(ext2_filsys fs) + * of inode tables of slack space so the resize + * operation can be guaranteed to finish. + */ +- int flexbg_size = 1 << fs->super->s_log_groups_per_flex; +- int extra_groups; +- + extra_groups = flexbg_size - (groups & (flexbg_size - 1)); + data_needed += META_OVERHEAD(fs) * extra_groups; ++ extra_groups = groups % flexbg_size; + } + + /* +@@ -2002,6 +2002,20 @@ blk_t calculate_minimum_resize_size(ext2_filsys fs) + } + + groups += extra_grps; ++ extra_groups += extra_grps; ++ if (fs->super->s_feature_incompat ++ & EXT4_FEATURE_INCOMPAT_FLEX_BG ++ && extra_groups > flexbg_size) { ++ /* ++ * For ext4 we need to allow for up to a flex_bg worth ++ * of inode tables of slack space so the resize ++ * operation can be guaranteed to finish. ++ */ ++ extra_groups = flexbg_size - ++ (groups & (flexbg_size - 1)); ++ data_needed += META_OVERHEAD(fs) * extra_groups; ++ extra_groups = groups % flexbg_size; ++ } + } + + /* now for the fun voodoo */ |