Commit bedd6fe4 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Fix nocow locks deadlock



On trylock failure we were waiting for outstanding reads to complete -
but nocow locks need to be held until the whole move is finished.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent a66ff26b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -560,7 +560,8 @@ int bch2_data_update_init(struct btree_trans *trans,
				move_ctxt_wait_event(ctxt,
						(locked = bch2_bucket_nocow_trylock(&c->nocow_locks,
									  PTR_BUCKET_POS(c, &p.ptr), 0)) ||
						!atomic_read(&ctxt->read_sectors));
						(!atomic_read(&ctxt->read_sectors) &&
						 !atomic_read(&ctxt->write_sectors)));

				if (!locked)
					bch2_bucket_nocow_lock(&c->nocow_locks,