summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-04-17 19:02:04 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-04-17 19:57:55 -0400
commitc1294412529c9e7a0dac32c92a821f4a976f0f2f (patch)
treeb22d95860641ea4e0e14b0a1d3cc3eedc54a9a1c
parent725790345e68a3a74606383744315624e0d037cd (diff)
bcachefs: Fix hash_check_key()
hash_check_key() was incorrectly handling transaction restarts - switch it to for_each_btree_key_norestart(). Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/fsck.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/bcachefs/fsck.c b/fs/bcachefs/fsck.c
index fe83954079d8..abe09f062eee 100644
--- a/fs/bcachefs/fsck.c
+++ b/fs/bcachefs/fsck.c
@@ -740,8 +740,9 @@ static int hash_check_key(struct btree_trans *trans,
if (hash_k.k->p.offset < hash)
goto bad_hash;
- for_each_btree_key(trans, iter, desc.btree_id, POS(hash_k.k->p.inode, hash),
- BTREE_ITER_SLOTS, k, ret) {
+ for_each_btree_key_norestart(trans, iter, desc.btree_id,
+ POS(hash_k.k->p.inode, hash),
+ BTREE_ITER_SLOTS, k, ret) {
if (!bkey_cmp(k.k->p, hash_k.k->p))
break;
@@ -759,16 +760,15 @@ static int hash_check_key(struct btree_trans *trans,
bch2_trans_iter_exit(trans, &iter);
goto bad_hash;
}
-
}
out:
bch2_trans_iter_exit(trans, &iter);
printbuf_exit(&buf);
return ret;
bad_hash:
- if (fsck_err(c, "hash table key at wrong offset: btree %u inode %llu offset %llu, "
+ if (fsck_err(c, "hash table key at wrong offset: btree %s inode %llu offset %llu, "
"hashed to %llu\n%s",
- desc.btree_id, hash_k.k->p.inode, hash_k.k->p.offset, hash,
+ bch2_btree_ids[desc.btree_id], hash_k.k->p.inode, hash_k.k->p.offset, hash,
(printbuf_reset(&buf),
bch2_bkey_val_to_text(&buf, c, hash_k), buf.buf)) == FSCK_ERR_IGNORE)
return 0;