diff --git a/.bcachefs_revision b/.bcachefs_revision index 6f4750b7..b1e0bf83 100644 --- a/.bcachefs_revision +++ b/.bcachefs_revision @@ -1 +1 @@ -04036b491089aeb4bac5d796ae1716d019564f7a +ffad51ba45f8c0785bbb2e2903715d825a8eea9a diff --git a/libbcachefs/btree_update_leaf.c b/libbcachefs/btree_update_leaf.c index 19cb6e1e..ee978f33 100644 --- a/libbcachefs/btree_update_leaf.c +++ b/libbcachefs/btree_update_leaf.c @@ -387,7 +387,12 @@ btree_key_can_insert_cached(struct btree_trans *trans, */ trace_trans_restart_key_cache_key_realloced(trans->fn, _RET_IP_, path->btree_id, &path->pos); - return btree_trans_restart(trans); + /* + * Not using btree_trans_restart() because we can't unlock here, we have + * write locks held: + */ + trans->restarted = true; + return -EINTR; } static inline void do_btree_insert_one(struct btree_trans *trans,