• Darrick J. Wong's avatar
    xfs: shut down filesystem if we xfs_trans_cancel with deferred work items · 47a6df7c
    Darrick J. Wong authored
    While debugging some very strange rmap corruption reports in connection
    with the online directory repair code.  I root-caused the error to the
    following incorrect sequence:
    
    <start repair transaction>
    <expand directory, causing a deferred rmap to be queued>
    <roll transaction>
    <cancel transaction>
    
    Obviously, we should have committed the transaction instead of
    cancelling it.  Thinking more broadly, however, xfs_trans_cancel should
    have warned us that we were throwing away work item that we already
    committed to performing.  This is not correct, and we need to shut down
    the filesystem.
    
    Change xfs_trans_cancel to complain in the loudest manner if we're
    cancelling any transaction with deferred work items attached.
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    47a6df7c
xfs_trans.c 32.5 KB