projects
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
3e48999
)
bcachefs: fix deletion of indirect extents in btree_gc
author
Kent Overstreet
<kent.overstreet@linux.dev>
Sun, 10 Mar 2024 20:24:16 +0000
(16:24 -0400)
committer
Kent Overstreet
<kent.overstreet@linux.dev>
Thu, 14 Mar 2024 01:22:26 +0000
(21:22 -0400)
we need to run the normal extent update path on deletion -
bch2_bkey_make_mut() is incorrect when key type is changing.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_gc.c
patch
|
blob
|
history
diff --git
a/fs/bcachefs/btree_gc.c
b/fs/bcachefs/btree_gc.c
index b7085e996c440c0212c5d767ac02d5229dca4b42..0e1ef8bef997835b521f069f8ecabc12a63efdcf 100644
(file)
--- a/
fs/bcachefs/btree_gc.c
+++ b/
fs/bcachefs/btree_gc.c
@@
-1586,8
+1586,7
@@
static int bch2_gc_write_reflink_key(struct btree_trans *trans,
" should be %u",
(bch2_bkey_val_to_text(&buf, c, k), buf.buf),
r->refcount)) {
- struct bkey_i *new = bch2_bkey_make_mut(trans, iter, &k, 0);
-
+ struct bkey_i *new = bch2_bkey_make_mut_noupdate(trans, k);
ret = PTR_ERR_OR_ZERO(new);
if (ret)
return ret;
@@
-1596,6
+1595,7
@@
static int bch2_gc_write_reflink_key(struct btree_trans *trans,
new->k.type = KEY_TYPE_deleted;
else
*bkey_refcount(bkey_i_to_s(new)) = cpu_to_le64(r->refcount);
+ ret = bch2_trans_update(trans, iter, new, 0);
}
fsck_err:
printbuf_exit(&buf);