summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/md/bcache/btree_update.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/bcache/btree_update.c b/drivers/md/bcache/btree_update.c
index 17afb0d60a57..4d44ecb3fd87 100644
--- a/drivers/md/bcache/btree_update.c
+++ b/drivers/md/bcache/btree_update.c
@@ -1601,7 +1601,7 @@ int bch_btree_insert_trans(struct btree_insert_trans *trans,
return -EROFS;
trans_for_each_entry(trans, i) {
- i->iter->locks_want = 0;
+ i->iter->locks_want = max_t(int, i->iter->locks_want, 0);
if (unlikely(!bch_btree_iter_upgrade(i->iter))) {
ret = -EINTR;
goto err;
@@ -1675,6 +1675,9 @@ retry:
if (!same_leaf_as_prev(trans, i))
bch_btree_node_write_lazy(i->iter->nodes[0], i->iter);
+ trans_for_each_entry(trans, i)
+ i->iter->locks_want = 0;
+
out:
percpu_ref_put(&c->writes);
return ret;