bcachefs: Drop bch2_fsck_inode_nlink()
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 7 Apr 2021 01:19:25 +0000 (21:19 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:59 +0000 (17:08 -0400)
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>
fs/bcachefs/fsck.c
fs/bcachefs/fsck.h
fs/bcachefs/recovery.c

index 36baff8..8fa41b3 100644 (file)
@@ -1468,15 +1468,6 @@ int bch2_fsck_full(struct bch_fs *c)
                check_inode_nlinks(c, &lostfound_inode);
 }
 
-int bch2_fsck_inode_nlink(struct bch_fs *c)
-{
-       struct bch_inode_unpacked root_inode, lostfound_inode;
-
-       return  check_root(c, &root_inode) ?:
-               check_lostfound(c, &root_inode, &lostfound_inode) ?:
-               check_inode_nlinks(c, &lostfound_inode);
-}
-
 int bch2_fsck_walk_inodes_only(struct bch_fs *c)
 {
        struct btree_trans trans;
index 9e4af02..264f270 100644 (file)
@@ -3,7 +3,6 @@
 #define _BCACHEFS_FSCK_H
 
 int bch2_fsck_full(struct bch_fs *);
-int bch2_fsck_inode_nlink(struct bch_fs *);
 int bch2_fsck_walk_inodes_only(struct bch_fs *);
 
 #endif /* _BCACHEFS_FSCK_H */
index a3a6abb..24c0646 100644 (file)
@@ -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)) {