diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-08-11 03:22:01 +0300 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-10-23 00:09:37 +0300 |
commit | c7be3cb546e3bb2704008506bd6c50ad5ea02441 (patch) | |
tree | d6a411dd286188f52673d93694d0aa3554d18739 | |
parent | fa3ae3ca4e13d86fe5f97c275748b3820c873091 (diff) | |
download | linux-c7be3cb546e3bb2704008506bd6c50ad5ea02441.tar.xz |
bcachefs: "Snapshot deletion did not run correctly" should be a fsck err
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>
-rw-r--r-- | fs/bcachefs/fsck.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/bcachefs/fsck.c b/fs/bcachefs/fsck.c index bb8cab7cb405..c93e177a314f 100644 --- a/fs/bcachefs/fsck.c +++ b/fs/bcachefs/fsck.c @@ -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; } |