• Arne Jansen's avatar
    Btrfs: fix deadlock in wait_for_more_refs · 1fa11e26
    Arne Jansen authored
    Commit a168650c introduced a waiting mechanism to prevent busy waiting in
    btrfs_run_delayed_refs. This can deadlock with btrfs_run_ordered_operations,
    where a tree_mod_seq is held while waiting for the io to complete, while
    the end_io calls btrfs_run_delayed_refs.
    This whole mechanism is unnecessary. If not enough runnable refs are
    available to satisfy count, just return as count is more like a guideline
    than a strict requirement.
    In case we have to run all refs, commit transaction makes sure that no
    other threads are working in the transaction anymore, so we just assert
    here that no refs are blocked.
    Signed-off-by: default avatarArne Jansen <sensille@gmx.net>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    1fa11e26
disk-io.c 104 KB