* Mon Oct 19 2009 Eric Sandeen <sandeen@redhat.com> 1.41.9-5
- Allow superblock timestamp differences up to 24h (#522969)
This commit is contained in:
parent
c0bea9dce9
commit
c89ade3110
199
e2fsprogs-1.41.9-24hr-fsck-grace.patch
Normal file
199
e2fsprogs-1.41.9-24hr-fsck-grace.patch
Normal file
@ -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
|
@ -4,7 +4,7 @@
|
||||
Summary: Utilities for managing ext2, ext3, and ext4 filesystems
|
||||
Name: e2fsprogs
|
||||
Version: 1.41.9
|
||||
Release: 4%{?dist}
|
||||
Release: 5%{?dist}
|
||||
|
||||
# License tags based on COPYING file distinctions for various components
|
||||
License: GPLv2
|
||||
@ -14,6 +14,7 @@ Source1: ext2_types-wrapper.h
|
||||
|
||||
Patch2: e2fsprogs-1.40.4-sb_feature_check_ignore.patch
|
||||
Patch4: e2fsprogs-resize-minimum-fix.patch
|
||||
Patch5: e2fsprogs-1.41.9-24hr-fsck-grace.patch
|
||||
|
||||
Url: http://e2fsprogs.sourceforge.net/
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -140,6 +141,7 @@ It was originally inspired by the Multics SubSystem library.
|
||||
# after an selinux install...
|
||||
%patch2 -p1 -b .featurecheck
|
||||
%patch4 -p1 -b .resize
|
||||
%patch5 -p1 -b .24h
|
||||
|
||||
%build
|
||||
%configure --enable-elf-shlibs --enable-nls --disable-uuidd --disable-fsck \
|
||||
@ -300,8 +302,11 @@ exit 0
|
||||
%{_libdir}/pkgconfig/ss.pc
|
||||
|
||||
%changelog
|
||||
* Thu Oct 06 2009 Eric Sandeen <sandeen@redhat.com> 1.41.9-4
|
||||
- Fix install with --excludedocs (#515997)
|
||||
* Mon Oct 19 2009 Eric Sandeen <sandeen@redhat.com> 1.41.9-5
|
||||
- Allow superblock timestamp differences up to 24h (#522969)
|
||||
|
||||
* Tue Oct 06 2009 Eric Sandeen <sandeen@redhat.com> 1.41.9-4
|
||||
- Fix install with --excludedocs (#515987)
|
||||
|
||||
* Thu Sep 14 2009 Eric Sandeen <sandeen@redhat.com> 1.41.9-3
|
||||
- Drop defrag bits for now, not ready yet.
|
||||
|
Loading…
Reference in New Issue
Block a user