diff options
-rw-r--r-- | drivers/md/bcache/btree_update.c | 5 |
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; |