summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2022-09-23 21:00:24 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2022-10-03 23:55:14 -0400
commit1c5623c645136d1a71037933741da230e2b316de (patch)
tree080d8b051682787135495249048b7c926bc7b035
parentc37e77d022c7d595475d18088180faf0116830a7 (diff)
bcachefs: Fix blocking with locks held
This is a major oopsy - we should always be unlocking before calling closure_sync(), else we'll cause a deadlock. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/btree_update_interior.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
index 57c2e11e149f..803973ffc5f7 100644
--- a/fs/bcachefs/btree_update_interior.c
+++ b/fs/bcachefs/btree_update_interior.c
@@ -1115,10 +1115,10 @@ bch2_btree_update_start(struct btree_trans *trans, struct btree_path *path,
closure_init_stack(&cl);
- bch2_trans_unlock(trans);
-
do {
ret = bch2_btree_reserve_get(trans, as, nr_nodes, flags, &cl);
+
+ bch2_trans_unlock(trans);
closure_sync(&cl);
} while (ret == -EAGAIN);
}