You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
From 16c22d11ac511d6b228db36b62c1567e9578f290 Mon Sep 17 00:00:00 2001 |
|
From: Theodore Ts'o <tytso@mit.edu> |
|
Date: Thu, 19 Dec 2019 19:45:06 -0500 |
|
Subject: [PATCH 2/7] e2fsck: don't try to rehash a deleted directory |
|
|
|
If directory has been deleted in pass1[bcd] processing, then we |
|
shouldn't try to rehash the directory in pass 3a when we try to |
|
rehash/reoptimize directories. |
|
|
|
RHBZ: 1797731 |
|
Signed-off-by: Theodore Ts'o <tytso@mit.edu> |
|
--- |
|
e2fsck/pass1b.c | 4 ++++ |
|
e2fsck/rehash.c | 3 +++ |
|
2 files changed, 7 insertions(+) |
|
|
|
diff --git a/e2fsck/pass1b.c b/e2fsck/pass1b.c |
|
index 13bd9e98..0e6c29ef 100644 |
|
--- a/e2fsck/pass1b.c |
|
+++ b/e2fsck/pass1b.c |
|
@@ -643,6 +643,10 @@ static void delete_file(e2fsck_t ctx, ext2_ino_t ino, |
|
fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx); |
|
if (ctx->inode_bad_map) |
|
ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino); |
|
+ if (ctx->inode_reg_map) |
|
+ ext2fs_unmark_inode_bitmap2(ctx->inode_reg_map, ino); |
|
+ ext2fs_unmark_inode_bitmap2(ctx->inode_dir_map, ino); |
|
+ ext2fs_unmark_inode_bitmap2(ctx->inode_used_map, ino); |
|
ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(dp->inode.i_mode)); |
|
quota_data_sub(ctx->qctx, &dp->inode, ino, |
|
pb.dup_blocks * fs->blocksize); |
|
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c |
|
index fbc4e558..6f65edf3 100644 |
|
--- a/e2fsck/rehash.c |
|
+++ b/e2fsck/rehash.c |
|
@@ -882,6 +882,9 @@ void e2fsck_rehash_directories(e2fsck_t ctx) |
|
} |
|
if (ino == ctx->lost_and_found) |
|
continue; |
|
+ if (!ext2fs_test_inode_bitmap2(ctx->inode_dir_map, ino)) |
|
+ continue; |
|
+ |
|
pctx.dir = ino; |
|
if (first) { |
|
fix_problem(ctx, PR_3A_PASS_HEADER, &pctx); |
|
-- |
|
2.21.1 |
|
|
|
|