summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-08-29 13:29:31 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:08:26 -0400
commit78854fca28e4e789c99a812acda2ac04c20d2dac (patch)
treec24c49138fb18c1f89eab3c12524c50f3b8f8317
parent06ab329c150f9eebc68cdb156a9591084b16ec55 (diff)
downloadlwn-78854fca28e4e789c99a812acda2ac04c20d2dac.tar.gz
lwn-78854fca28e4e789c99a812acda2ac04c20d2dac.zip
bcachefs: Fix BTREE_INSERT_NOMARK_OVERWRITES
bch2_mark_update() was correct, but bch2_trans_mark_update() wasn't respecting BTREE_INSERT_NOMARK_OVERWRITES - key marking/triggers really need to be cleaned up. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/buckets.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index d732ec77e281..774201a1c0c5 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -1762,6 +1762,9 @@ int bch2_trans_mark_update(struct btree_trans *trans,
if (ret)
return ret;
+ if (unlikely(trans->flags & BTREE_INSERT_NOMARK_OVERWRITES))
+ return 0;
+
while ((_k = bch2_btree_node_iter_peek_filter(&node_iter, b,
KEY_TYPE_discard))) {
struct bkey unpacked;