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>
bitmap-optimize
Theodore Ts'o 2010-01-04 13:59:04 -05:00
parent bbb60e4fef
commit c70674387e
2 changed files with 23 additions and 1 deletions

View File

@ -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)

View File

@ -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,