]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
bcachefs: Fix srcu lock warning in btree_update_nodes_written()
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 19 Feb 2025 20:40:03 +0000 (15:40 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 19 Feb 2025 23:52:42 +0000 (18:52 -0500)
We don't want to be holding the srcu lock while waiting on btree write
completions - easily fixed.

Reported-by: Janpieter Sollie <janpieter.sollie@edpnet.be>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_update_interior.c

index f4aeadbe53c1ad78161399c9421b050fc951e66b..e4e7c804625e0ee115f4a104d2e7cbd0e797c79f 100644 (file)
@@ -681,9 +681,11 @@ static void btree_update_nodes_written(struct btree_update *as)
 
                b = as->old_nodes[i];
 
+               bch2_trans_begin(trans);
                btree_node_lock_nopath_nofail(trans, &b->c, SIX_LOCK_read);
                seq = b->data ? b->data->keys.seq : 0;
                six_unlock_read(&b->c.lock);
+               bch2_trans_unlock_long(trans);
 
                if (seq == as->old_nodes_seq[i])
                        wait_on_bit_io(&b->flags, BTREE_NODE_write_in_flight_inner,