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