• Kent Overstreet's avatar
    bcachefs: Fix deadlock on nocow locks in data move path · 7ffb6a7e
    Kent Overstreet authored
    The recent nocow locking rework introduced a deadlock in the data move
    path: the new nocow locking scheme uses a hash table with a fixed size
    array for chaining, meaning on hash collision we may have to wait for
    other locks to be released before we can lock a bucket.
    
    And since the data move path needs to submit writes from the same thread
    that's taking nocow locks and submitting reads, this introduces a
    deadlock.
    
    This shouldn't happen often in practice, but since the data move path
    can keep large numbers of IOs in flight simultaneously, it's something
    we have to handle.
    
    This patch makes move_ctxt_wait_event() available to
    bch2_data_update_init() and uses it when appropriate, which is our
    normal solution to this kind of thing.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    7ffb6a7e
move.h 2.15 KB