• Kent Overstreet's avatar
    bcachefs: Fix a deadlock · ee757054
    Kent Overstreet authored
    Waiting on a btree node write with btree locks held can deadlock, if the
    write errors: the write error path has to do do a btree update to drop
    the pointer to the replica that errored.
    
    The interior update path has to wait on in flight btree writes before
    freeing nodes on disk. Previously, this was done in
    bch2_btree_interior_update_will_free_node(), and could deadlock; now, we
    just stash a pointer to the node and do it in
    btree_update_nodes_written(), just prior to the transactional part of
    the update.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    ee757054
btree_update_interior.h 9.76 KB