diff options
Diffstat (limited to 'meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-e2fsck-fix-last-mount-write-time-when-e2fsck-is-forc.patch')
-rw-r--r-- | meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-e2fsck-fix-last-mount-write-time-when-e2fsck-is-forc.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-e2fsck-fix-last-mount-write-time-when-e2fsck-is-forc.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-e2fsck-fix-last-mount-write-time-when-e2fsck-is-forc.patch new file mode 100644 index 0000000000..d679b25b1d --- /dev/null +++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-e2fsck-fix-last-mount-write-time-when-e2fsck-is-forc.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From 2c69c94217b6db083d601d4fd62d6ab6c1628fee Mon Sep 17 00:00:00 2001 | ||
2 | From: Lukas Czerner <lczerner@redhat.com> | ||
3 | Date: Mon, 14 Jun 2021 15:27:25 +0200 | ||
4 | Subject: [PATCH] e2fsck: fix last mount/write time when e2fsck is forced | ||
5 | |||
6 | With commit c52d930f e2fsck is no longer able to fix bad last | ||
7 | mount/write time by default because it is conditioned on s_checkinterval | ||
8 | not being zero, which it is by default. | ||
9 | |||
10 | One place where it matters is when other e2fsprogs tools require to run | ||
11 | full file system check before a certain operation. If the last mount | ||
12 | time is for any reason in future, it will not allow it to run even if | ||
13 | full e2fsck is ran. | ||
14 | |||
15 | Fix it by checking the last mount/write time when the e2fsck is forced, | ||
16 | except for the case where we know the system clock is broken. | ||
17 | |||
18 | [ Reworked the conditionals so error messages claiming that the last | ||
19 | write/mount time were corrupted wouldn't be always printed when the | ||
20 | e2fsck was run with the -f option, thus causing 299 out of 372 | ||
21 | regression tests to fail. -- TYT ] | ||
22 | |||
23 | Fixes: c52d930f ("e2fsck: don't check for future superblock times if checkinterval == 0") | ||
24 | Reported-by: Dusty Mabe <dustymabe@redhat.com> | ||
25 | Signed-off-by: Lukas Czerner <lczerner@redhat.com> | ||
26 | Signed-off-by: Theodore Ts'o <tytso@mit.edu> | ||
27 | |||
28 | Upstream-Status: Backport [https://github.com/tytso/e2fsprogs/commit/2c69c94217b6db083d601d4fd62d6ab6c1628fee] | ||
29 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
30 | --- | ||
31 | e2fsck/super.c | 12 ++++++------ | ||
32 | 1 file changed, 6 insertions(+), 6 deletions(-) | ||
33 | |||
34 | diff --git a/e2fsck/super.c b/e2fsck/super.c | ||
35 | index e1c3f935..31e2ffb2 100644 | ||
36 | --- a/e2fsck/super.c | ||
37 | +++ b/e2fsck/super.c | ||
38 | @@ -1038,9 +1038,9 @@ void check_super_block(e2fsck_t ctx) | ||
39 | * Check to see if the superblock last mount time or last | ||
40 | * write time is in the future. | ||
41 | */ | ||
42 | - if (!broken_system_clock && fs->super->s_checkinterval && | ||
43 | - !(ctx->flags & E2F_FLAG_TIME_INSANE) && | ||
44 | - fs->super->s_mtime > (__u32) ctx->now) { | ||
45 | + if (((ctx->options & E2F_OPT_FORCE) || fs->super->s_checkinterval) && | ||
46 | + !broken_system_clock && !(ctx->flags & E2F_FLAG_TIME_INSANE) && | ||
47 | + (fs->super->s_mtime > (__u32) ctx->now)) { | ||
48 | pctx.num = fs->super->s_mtime; | ||
49 | problem = PR_0_FUTURE_SB_LAST_MOUNT; | ||
50 | if (fs->super->s_mtime <= (__u32) ctx->now + ctx->time_fudge) | ||
51 | @@ -1050,9 +1050,9 @@ void check_super_block(e2fsck_t ctx) | ||
52 | fs->flags |= EXT2_FLAG_DIRTY; | ||
53 | } | ||
54 | } | ||
55 | - if (!broken_system_clock && fs->super->s_checkinterval && | ||
56 | - !(ctx->flags & E2F_FLAG_TIME_INSANE) && | ||
57 | - fs->super->s_wtime > (__u32) ctx->now) { | ||
58 | + if (((ctx->options & E2F_OPT_FORCE) || fs->super->s_checkinterval) && | ||
59 | + !broken_system_clock && !(ctx->flags & E2F_FLAG_TIME_INSANE) && | ||
60 | + (fs->super->s_wtime > (__u32) ctx->now)) { | ||
61 | pctx.num = fs->super->s_wtime; | ||
62 | problem = PR_0_FUTURE_SB_LAST_WRITE; | ||
63 | if (fs->super->s_wtime <= (__u32) ctx->now + ctx->time_fudge) | ||
64 | -- | ||
65 | 2.25.1 | ||
66 | |||