• Josef Bacik's avatar
    Btrfs: stop waiting on current trans if we aborted · 501407aa
    Josef Bacik authored
    I hit a hang when run_delayed_refs returned an error in the beginning of
    btrfs_commit_transaction.  If we decide we need to commit the transaction in
    btrfs_end_transaction we'll set BLOCKED and start to commit, but if we get an
    error this early on we'll just exit without committing.  This is fine, except
    that anybody else who tried to start a transaction will sit in
    wait_current_trans() since we're set to BLOCKED and we never set it to something
    else and woke people up.  To fix this we want to check for trans->aborted
    everywhere we wait for the transaction state to change, and make
    btrfs_abort_transaction() wake up any waiters there may be.  All the callers
    will notice that the transaction has aborted and exit out properly.  Thanks,
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    501407aa
super.c 46.8 KB