From 92846e036c76b820445822edc80fc9cff0310a5d Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Wed, 8 Dec 2021 00:35:04 -0700 Subject: [PATCH] LU-15330 e2fsck: no parent lookup in disconnected dir Don't call ext2fs_get_pathname() to do a name lookup for a disconnected directory, since the directory block traversal in pass1 has already scanned all of the leaf blocks and not found the relevant entry. If it had been found the directory would not be disconnected in pass3. Instead, print the ".." directory name in the prompt directly. This avoids a potentially lengthy directory traversal for each disconnected entry if the previous parent is large that never finds the entry. Signed-off-by: Andreas Dilger Change-Id: If17a92689f24f365ca1fbe5c837e7d5f383ebbe5 Reviewed-on: https://review.whamcloud.com/45785 Tested-by: Maloo Tested-by: jenkins Reviewed-by: Artem Blagodarenko --- e2fsck/pass3.c | 19 ++++++++++++------- e2fsck/problem.c | 8 +++++++- e2fsck/problem.h | 3 +++ tests/f_bad_encryption/expect.1 | 6 +++--- tests/f_badroot/expect.1 | 2 +- tests/f_encrypted_lpf/expect.1 | 4 ++-- tests/f_expand/expect.1.gz | Bin 13462 -> 13461 bytes tests/f_lpf2/expect.1 | 4 ++-- tests/f_noroot/expect.1 | 4 ++-- tests/f_orphan_dotdot_ft/expect.1 | 6 +++--- tests/f_rebuild_csum_rootdir/expect.1 | 2 +- tests/f_recnect_bad/expect.1 | 2 +- tests/f_resize_inode_meta_bg/expect.1 | 2 +- 13 files changed, 38 insertions(+), 24 deletions(-) diff --git a/e2fsck/pass3.c b/e2fsck/pass3.c index b0142dc..94d1ba7 100644 --- a/e2fsck/pass3.c +++ b/e2fsck/pass3.c @@ -22,7 +22,7 @@ * will offer to reconnect it to /lost+found. While it is chasing * parent pointers up the filesystem tree, if pass3 sees a directory * twice, then it has detected a filesystem loop, and it will again - * offer to reconnect the directory to /lost+found in to break the + * offer to reconnect the directory to /lost+found in order to break the * filesystem loop. * * Pass 3 also contains the subroutine, e2fsck_reconnect_file() to @@ -304,7 +304,7 @@ static int check_directory(e2fsck_t ctx, ext2_ino_t dir, * If it was marked done already, then we've reached a * parent we've already checked. */ - if (ext2fs_mark_inode_bitmap2(inode_done_map, ino)) + if (ext2fs_mark_inode_bitmap2(inode_done_map, ino)) break; if (e2fsck_dir_info_get_parent(ctx, ino, &parent)) { @@ -319,13 +319,18 @@ static int check_directory(e2fsck_t ctx, ext2_ino_t dir, */ if (!parent || (loop_pass && - (ext2fs_test_inode_bitmap2(inode_loop_detect, - parent)))) { + ext2fs_test_inode_bitmap2(inode_loop_detect, parent))) { pctx->ino = ino; - if (fix_problem(ctx, PR_3_UNCONNECTED_DIR, pctx)) { - if (e2fsck_reconnect_file(ctx, pctx->ino)) + if (parent) + pctx->dir = parent; + else + ext2fs_lookup(fs, ino, "..", 2, NULL, + &pctx->dir); + if (fix_problem(ctx, !parent ? PR_3_UNCONNECTED_DIR : + PR_3_LOOPED_DIR, pctx)) { + if (e2fsck_reconnect_file(ctx, pctx->ino)) { ext2fs_unmark_valid(fs); - else { + } else { fix_dotdot(ctx, pctx->ino, ctx->lost_and_found); parent = ctx->lost_and_found; diff --git a/e2fsck/problem.c b/e2fsck/problem.c index 16c858e..a62f2e2 100644 --- a/e2fsck/problem.c +++ b/e2fsck/problem.c @@ -1927,7 +1927,7 @@ static struct e2fsck_problem problem_table[] = { /* Unconnected directory inode */ { PR_3_UNCONNECTED_DIR, /* xgettext:no-c-format */ - N_("Unconnected @d @i %i (%p)\n"), + N_("Unconnected @d @i %i (was in %q)\n"), PROMPT_CONNECT, 0, 0, 0, 0 }, /* /lost+found not found */ @@ -2064,6 +2064,12 @@ static struct e2fsck_problem problem_table[] = { N_("/@l is encrypted\n"), PROMPT_CLEAR, 0, 0, 0, 0 }, + /* Recursively looped directory inode */ + { PR_3_LOOPED_DIR, + /* xgettext:no-c-format */ + N_("Recursively looped @d @i %i (%p)\n"), + PROMPT_CONNECT, 0, 0, 0, 0 }, + /* Pass 3A Directory Optimization */ /* Pass 3A: Optimizing directories */ diff --git a/e2fsck/problem.h b/e2fsck/problem.h index a379c8c..880d527 100644 --- a/e2fsck/problem.h +++ b/e2fsck/problem.h @@ -1187,6 +1187,9 @@ struct problem_context { /* Lost+found is encrypted */ #define PR_3_LPF_ENCRYPTED 0x03001B +/* Recursively looped directory inode */ +#define PR_3_LOOPED_DIR 0x03001D + /* * Pass 3a --- rehashing directories */ diff --git a/tests/f_bad_encryption/expect.1 b/tests/f_bad_encryption/expect.1 index d743e66..7027095 100644 --- a/tests/f_bad_encryption/expect.1 +++ b/tests/f_bad_encryption/expect.1 @@ -54,13 +54,13 @@ Encrypted entry '\M-ggCeM-/?M-^BM-{(M-^OM-9M-^QQAM-^N=M-c^Mo' in /edir (12) refe Clear? yes Pass 3: Checking directory connectivity -Unconnected directory inode 18 (/edir/???) +Unconnected directory inode 18 (was in /edir) Connect to /lost+found? yes -Unconnected directory inode 24 (/edir/???) +Unconnected directory inode 24 (was in /edir) Connect to /lost+found? yes -Unconnected directory inode 27 (/edir/???) +Unconnected directory inode 27 (was in /edir) Connect to /lost+found? yes Pass 4: Checking reference counts diff --git a/tests/f_badroot/expect.1 b/tests/f_badroot/expect.1 index f9d01e5..ff92426 100644 --- a/tests/f_badroot/expect.1 +++ b/tests/f_badroot/expect.1 @@ -9,7 +9,7 @@ Entry '..' in <2>/<11> (11) has deleted/unused inode 2. Clear? yes Pass 3: Checking directory connectivity Root inode not allocated. Allocate? yes -Unconnected directory inode 11 (...) +Unconnected directory inode 11 (was in /) Connect to /lost+found? yes /lost+found not found. Create? yes diff --git a/tests/f_encrypted_lpf/expect.1 b/tests/f_encrypted_lpf/expect.1 index 7e215b7..63ac5f3 100644 --- a/tests/f_encrypted_lpf/expect.1 +++ b/tests/f_encrypted_lpf/expect.1 @@ -1,7 +1,7 @@ Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity -Unconnected directory inode 12 (/???) +Unconnected directory inode 12 (was in /) Connect to /lost+found? yes /lost+found is encrypted @@ -13,7 +13,7 @@ Restarting e2fsck from the beginning... Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity -Unconnected directory inode 11 (/???) +Unconnected directory inode 11 (was in /) Connect to /lost+found? yes Pass 3A: Optimizing directories diff --git a/tests/f_expand/expect.1.gz b/tests/f_expand/expect.1.gz index 1015e155ca93f1aea0edfad09be6e795c0ab1898..81fe7dd67f81dd64100b5fdfe2884fab129ab721 100644 GIT binary patch literal 13461 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 literal 13462 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 diff --git a/tests/f_lpf2/expect.1 b/tests/f_lpf2/expect.1 index 633586c..ab5d9ba 100644 --- a/tests/f_lpf2/expect.1 +++ b/tests/f_lpf2/expect.1 @@ -1,12 +1,12 @@ Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity -Unconnected directory inode 12 (/???) +Unconnected directory inode 12 (was in /) Connect to /lost+found? yes /lost+found not found. Create? yes -Unconnected directory inode 13 (/???) +Unconnected directory inode 13 (was in /) Connect to /lost+found? yes Pass 4: Checking reference counts diff --git a/tests/f_noroot/expect.1 b/tests/f_noroot/expect.1 index 7bdd7cb..f8f652e 100644 --- a/tests/f_noroot/expect.1 +++ b/tests/f_noroot/expect.1 @@ -11,12 +11,12 @@ Entry '..' in /foo (12) has deleted/unused inode 2. Clear? yes Pass 3: Checking directory connectivity Root inode not allocated. Allocate? yes -Unconnected directory inode 11 (...) +Unconnected directory inode 11 (was in /) Connect to /lost+found? yes /lost+found not found. Create? yes -Unconnected directory inode 12 (...) +Unconnected directory inode 12 (was in /lost+found) Connect to /lost+found? yes Pass 4: Checking reference counts diff --git a/tests/f_orphan_dotdot_ft/expect.1 b/tests/f_orphan_dotdot_ft/expect.1 index 6a1373f..6092495 100644 --- a/tests/f_orphan_dotdot_ft/expect.1 +++ b/tests/f_orphan_dotdot_ft/expect.1 @@ -17,13 +17,13 @@ Entry '..' in <12>/<15> (15) has an incorrect filetype (was 2, should be 6). Fix? yes Pass 3: Checking directory connectivity -Unconnected directory inode 13 (<12>/<13>) +Unconnected directory inode 13 (was in <12>) Connect to /lost+found? yes -Unconnected directory inode 14 (<12>/<14>) +Unconnected directory inode 14 (was in <12>) Connect to /lost+found? yes -Unconnected directory inode 15 (<12>/<15>) +Unconnected directory inode 15 (was in <12>) Connect to /lost+found? yes Pass 4: Checking reference counts diff --git a/tests/f_rebuild_csum_rootdir/expect.1 b/tests/f_rebuild_csum_rootdir/expect.1 index 91e6027..063fb8c 100644 --- a/tests/f_rebuild_csum_rootdir/expect.1 +++ b/tests/f_rebuild_csum_rootdir/expect.1 @@ -13,7 +13,7 @@ Pass 3: Checking directory connectivity '..' in / (2) is (0), should be / (2). Fix? yes -Unconnected directory inode 11 (/???) +Unconnected directory inode 11 (was in /) Connect to /lost+found? yes /lost+found not found. Create? yes diff --git a/tests/f_recnect_bad/expect.1 b/tests/f_recnect_bad/expect.1 index 97ffcc5..685eedf 100644 --- a/tests/f_recnect_bad/expect.1 +++ b/tests/f_recnect_bad/expect.1 @@ -12,7 +12,7 @@ i_faddr for inode 13 (/test/???) is 12, should be zero. Clear? yes Pass 3: Checking directory connectivity -Unconnected directory inode 13 (/test/???) +Unconnected directory inode 13 (was in /test) Connect to /lost+found? yes Pass 4: Checking reference counts diff --git a/tests/f_resize_inode_meta_bg/expect.1 b/tests/f_resize_inode_meta_bg/expect.1 index 769f71a..e248083 100644 --- a/tests/f_resize_inode_meta_bg/expect.1 +++ b/tests/f_resize_inode_meta_bg/expect.1 @@ -45,7 +45,7 @@ Pass 3: Checking directory connectivity '..' in / (2) is (0), should be / (2). Fix? yes -Unconnected directory inode 11 (/???) +Unconnected directory inode 11 (was in /) Connect to /lost+found? yes /lost+found not found. Create? yes -- 1.8.3.1