diff options
author | Theodore Ts'o <tytso@mit.edu> | 2010-01-04 13:59:04 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2010-01-04 13:59:04 -0500 |
commit | c70674387ee0c038bca16098f7869181beeabe0a (patch) | |
tree | 7b904f8aa5ab37c450b8f5c6e879633f93f8fa1a | |
parent | bbb60e4fefdd404d8d696369804b556b404bb0c1 (diff) | |
download | e2fsprogs-c70674387ee0c038bca16098f7869181beeabe0a.tar.gz |
e2fsck: Add new e2fsck.conf option: broken_system_clock
The broken_system_clock allows the time to be in the future when in
preen mode. It's useful for people who have, as the name implies,
broken system clocks.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
-rw-r--r-- | e2fsck/e2fsck.conf.5.in | 13 | ||||
-rw-r--r-- | e2fsck/problem.c | 11 |
2 files changed, 23 insertions, 1 deletions
diff --git a/e2fsck/e2fsck.conf.5.in b/e2fsck/e2fsck.conf.5.in index a5021bd1..64aafd70 100644 --- a/e2fsck/e2fsck.conf.5.in +++ b/e2fsck/e2fsck.conf.5.in @@ -109,6 +109,19 @@ This can be disabled by setting to the boolean value of false. This setting defaults to true. .TP +.I broken_system_clock +The +.BR e2fsck (8) +program has some hueristics that assume that the system clock is +correct. In addition, many system programs make similar assumptions. +For example, the UUID library depends on time not going backwards in +order for it to be able to make its guarantees about issuing universally +unique ID's. Systems with broken system clocks, are well, broken. +However, broken system clocks, particularly in embedded systems, do +exist. If true, e2fsck will not abort a preen check if it detects a +last mounted or last write time in the superblock in the future. This +setting defaults to false. +.TP .I clear_test_fs_flag This boolean relation controls whether or not .BR e2fsck (8) diff --git a/e2fsck/problem.c b/e2fsck/problem.c index a713f1b2..9043281d 100644 --- a/e2fsck/problem.c +++ b/e2fsck/problem.c @@ -1741,7 +1741,7 @@ int fix_problem(e2fsck_t ctx, problem_t code, struct problem_context *pctx) struct e2fsck_problem *ptr; struct latch_descr *ldesc = 0; const char *message; - int def_yn, answer, ans; + int def_yn, answer, ans, broken_system_clock; int print_answer = 0; int suppress = 0; @@ -1753,6 +1753,15 @@ int fix_problem(e2fsck_t ctx, problem_t code, struct problem_context *pctx) if (!(ptr->flags & PR_CONFIG)) { char key[9], *new_desc; + if ((code == PR_0_FUTURE_SB_LAST_MOUNT) || + (code == PR_0_FUTURE_SB_LAST_WRITE)) { + profile_get_boolean(ctx->profile, "options", + "broken_system_clock", 0, 0, + &broken_system_clock); + if (broken_system_clock) + ptr->flags |= PR_PREEN_OK; + } + sprintf(key, "0x%06x", code); profile_get_string(ctx->profile, "problems", key, |