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: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
a66ff26b0f
commit
bedd6fe4d3
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user