summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-05-27 22:23:26 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-06-01 17:28:35 -0400
commitb7b31a327f7106c94a5d9e56f961041da466abc8 (patch)
tree0efe5a5283bb714869f45c09eef30a8d312c8a8c
parentfae2d5ca5444bd66af2fefff25c8f01ad50ed2a1 (diff)
bcachefs: btree allocation deadlock fix
-rw-r--r--fs/bcachefs/btree_update_interior.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
index 817c3dee553e..93909334166e 100644
--- a/fs/bcachefs/btree_update_interior.c
+++ b/fs/bcachefs/btree_update_interior.c
@@ -1564,11 +1564,15 @@ int bch2_btree_split_leaf(struct bch_fs *c, struct btree_iter *iter,
struct btree_update *as;
struct closure cl;
int ret = 0;
+ struct btree_iter *linked;
/*
* We already have a disk reservation and open buckets pinned; this
* allocation must not block:
*/
+ for_each_linked_btree_iter(iter, linked)
+ if (linked->btree_id == BTREE_ID_EXTENTS)
+ btree_reserve_flags |= BTREE_INSERT_USE_RESERVE;
if (iter->btree_id == BTREE_ID_EXTENTS)
btree_reserve_flags |= BTREE_INSERT_USE_RESERVE;