• Josef Bacik's avatar
    Btrfs: fix infinite loop when we abort on mount · cf79ffb5
    Josef Bacik authored
    Testing my enospc log code I managed to abort a transaction during mount, which
    put me into an infinite loop.  This is because of two things, first we don't
    reset trans_no_join if we abort during transaction commit, which will force
    anybody trying to start a transaction to just loop endlessly waiting for it to
    be set to 0.  But this is still just a symptom, the second issue is we don't set
    the fs state to error during errors on mount.  This is because we don't want to
    do the flip read only thing during mount, but we still really want to set the fs
    state to an error to keep us from even getting to the trans_no_join check.  So
    fix both of these things, make sure to reset trans_no_join if we abort during a
    commit, and make sure we set the fs state to error no matter if we're mounting
    or not.  This should keep us from getting into this infinite loop again.
    Thanks,
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    cf79ffb5
transaction.c 51.2 KB