summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-04-24 18:25:11 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2020-11-05 12:45:06 -0500
commitf480f5353725d7bd9693301af7fd0342288c069c (patch)
tree288e4f6ef608e18798df73ce5cf0021508dcc8b5
parent10f3ec58bc18500236873975a2788cea118602fe (diff)
bcachefs: Fix a deadlock
btree_node_lock_increment() was incorrectly skipping over the current iter when checking if we should increment a node we already have locked. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_locking.h3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
index fe8b58384a9e..bb4f66646da2 100644
--- a/fs/bcachefs/btree_locking.h
+++ b/fs/bcachefs/btree_locking.h
@@ -165,8 +165,7 @@ static inline bool btree_node_lock_increment(struct btree_iter *iter,
struct btree_iter *linked;
trans_for_each_iter(iter->trans, linked)
- if (linked != iter &&
- linked->l[level].b == b &&
+ if (linked->l[level].b == b &&
btree_node_locked_type(linked, level) >= want) {
six_lock_increment(&b->lock, want);
return true;