]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: "Snapshot deletion did not run correctly" should be a fsck err
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 11 Aug 2022 00:22:01 +0000 (20:22 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:37 +0000 (17:09 -0400)
This was noticed when a test hit this error and didn't fail, because
fsck wasn't returning that it fixed errors.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/fsck.c

index bb8cab7cb405f1994848886c12ae34d9fbb6e416..c93e177a314ffc38abe016fc085b3a23db02a467 100644 (file)
@@ -519,7 +519,7 @@ static int snapshots_seen_update(struct bch_fs *c, struct snapshots_seen *s,
                .id     = pos.snapshot,
                .equiv  = bch2_snapshot_equiv(c, pos.snapshot),
        };
-       int ret;
+       int ret = 0;
 
        if (bkey_cmp(s->pos, pos))
                s->ids.nr = 0;
@@ -529,14 +529,13 @@ static int snapshots_seen_update(struct bch_fs *c, struct snapshots_seen *s,
 
        darray_for_each(s->ids, i)
                if (i->equiv == n.equiv) {
-                       if (i->id != n.id) {
-                               bch_err(c, "snapshot deletion did not run correctly:\n"
+                       if (fsck_err_on(i->id != n.id, c,
+                                       "snapshot deletion did not run correctly:\n"
                                        "  duplicate keys in btree %s at %llu:%llu snapshots %u, %u (equiv %u)\n",
                                        bch2_btree_ids[btree_id],
                                        pos.inode, pos.offset,
-                                       i->id, n.id, n.equiv);
+                                       i->id, n.id, n.equiv))
                                return -BCH_ERR_need_snapshot_cleanup;
-                       }
 
                        return 0;
                }
@@ -545,6 +544,7 @@ static int snapshots_seen_update(struct bch_fs *c, struct snapshots_seen *s,
        if (ret)
                bch_err(c, "error reallocating snapshots_seen table (size %zu)",
                        s->ids.size);
+fsck_err:
        return ret;
 }