aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-06-18 16:20:01 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-06-18 16:20:01 -0400
commit84cb7bffe5e80ef9036213bbfbaf358d478536be (patch)
tree0e791eacbd1e71a564bf81fb60b519d7079fb3ee
parent4d185cfa51789d27489543443452972da87c2f97 (diff)
downloadbcachefs-tools-84cb7bffe5e80ef9036213bbfbaf358d478536be.tar.gz
Update bcachefs sources to bca25b802d fixup! bcachefs: Fix bch2_check_discard_freespace_key()
-rw-r--r--.bcachefs_revision2
-rw-r--r--libbcachefs/alloc_background.c16
2 files changed, 10 insertions, 8 deletions
diff --git a/.bcachefs_revision b/.bcachefs_revision
index 6ec4d5d7..9aa7e491 100644
--- a/.bcachefs_revision
+++ b/.bcachefs_revision
@@ -1 +1 @@
-99175e5712ecc323930db29565b43d5d0e55a276
+bca25b802d99014f6ef6d7cb7fa3d493fb3841b5
diff --git a/libbcachefs/alloc_background.c b/libbcachefs/alloc_background.c
index 00cdfcb8..cbe026fb 100644
--- a/libbcachefs/alloc_background.c
+++ b/libbcachefs/alloc_background.c
@@ -1315,9 +1315,11 @@ static int __bch2_check_discard_freespace_key(struct btree_trans *trans,
if (fsck_err_on(a->data_type != state ||
(state == BCH_DATA_free &&
genbits != alloc_freespace_genbits(*a)), c,
- "%s\n incorrectly set in %s index (free %u, genbits %llu should be %llu)",
+ "%s\n incorrectly set at %s:%llu:%llu:0 (free %u, genbits %llu should be %llu)",
(bch2_bkey_val_to_text(&buf, c, alloc_k), buf.buf),
bch2_btree_ids[iter->btree_id],
+ iter->pos.inode,
+ iter->pos.offset,
a->data_type == state,
genbits >> 56, alloc_freespace_genbits(*a) >> 56))
goto delete;
@@ -1328,8 +1330,10 @@ fsck_err:
printbuf_exit(&buf);
return ret;
delete:
- ret = bch2_btree_delete_extent_at(trans, iter,
- iter->btree_id == BTREE_ID_freespace ? 1 : 0, 0);
+ ret = bch2_btree_delete_extent_at(trans, iter,
+ iter->btree_id == BTREE_ID_freespace ? 1 : 0, 0) ?:
+ bch2_trans_commit(trans, NULL, NULL,
+ BTREE_INSERT_NOFAIL|BTREE_INSERT_LAZY_RW);
goto out;
}
@@ -1502,15 +1506,13 @@ bkey_err:
if (ret < 0)
goto err;
- ret = for_each_btree_key_commit(&trans, iter,
+ ret = for_each_btree_key2(&trans, iter,
BTREE_ID_need_discard, POS_MIN,
BTREE_ITER_PREFETCH, k,
- NULL, NULL, BTREE_INSERT_NOFAIL|BTREE_INSERT_LAZY_RW,
bch2_check_discard_freespace_key(&trans, &iter, k.k->p)) ?:
- for_each_btree_key_commit(&trans, iter,
+ for_each_btree_key2(&trans, iter,
BTREE_ID_freespace, POS_MIN,
BTREE_ITER_PREFETCH, k,
- NULL, NULL, BTREE_INSERT_NOFAIL|BTREE_INSERT_LAZY_RW,
bch2_check_discard_freespace_key(&trans, &iter, k.k->p)) ?:
for_each_btree_key_commit(&trans, iter,
BTREE_ID_bucket_gens, POS_MIN,