diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-04-06 21:19:25 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-22 17:08:59 -0400 |
commit | 3a14d58e7b330f3526509917bb6a38b55a1feef5 (patch) | |
tree | 13be76bfad354f261cd0645a20bcf35139db92fa /fs/bcachefs/recovery.c | |
parent | b6d4f474e4e785a9090992b0f301e57870f73711 (diff) | |
download | lwn-3a14d58e7b330f3526509917bb6a38b55a1feef5.tar.gz lwn-3a14d58e7b330f3526509917bb6a38b55a1feef5.zip |
bcachefs: Drop bch2_fsck_inode_nlink()
We've had BCH_FEATURE_atomic_nlink for quite some time, we can drop this
now.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/recovery.c')
-rw-r--r-- | fs/bcachefs/recovery.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index a3a6abb88d6f..24c0646913a8 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -1005,6 +1005,13 @@ int bch2_fs_recovery(struct bch_fs *c) } + if (!c->sb.clean && + !(c->sb.features & (1 << BCH_FEATURE_atomic_nlink))) { + bch_info(c, "BCH_FEATURE_atomic_nlink not set and filesystem dirty, fsck required"); + c->opts.fsck = true; + c->opts.fix_errors = FSCK_OPT_YES; + } + if (!(c->sb.features & (1ULL << BCH_FEATURE_alloc_v2))) { bch_info(c, "alloc_v2 feature bit not set, fsck required"); c->opts.fsck = true; @@ -1181,25 +1188,6 @@ use_clean: bch_verbose(c, "alloc write done"); } - if (!c->sb.clean) { - if (!(c->sb.features & (1 << BCH_FEATURE_atomic_nlink))) { - bch_info(c, "checking inode link counts"); - err = "error in recovery"; - ret = bch2_fsck_inode_nlink(c); - if (ret) - goto err; - bch_verbose(c, "check inodes done"); - - } else { - bch_verbose(c, "checking for deleted inodes"); - err = "error in recovery"; - ret = bch2_fsck_walk_inodes_only(c); - if (ret) - goto err; - bch_verbose(c, "check inodes done"); - } - } - if (c->opts.fsck) { bch_info(c, "starting fsck"); err = "error in fsck"; @@ -1207,6 +1195,13 @@ use_clean: if (ret) goto err; bch_verbose(c, "fsck done"); + } else if (!c->sb.clean) { + bch_verbose(c, "checking for deleted inodes"); + err = "error in recovery"; + ret = bch2_fsck_walk_inodes_only(c); + if (ret) + goto err; + bch_verbose(c, "check inodes done"); } if (enabled_qtypes(c)) { |