• Brian Foster's avatar
    xfs: dump transaction usage details on log reservation overrun · d4ca1d55
    Brian Foster authored
    If a transaction log reservation overrun occurs, the ticket data
    associated with the reservation is dumped in xfs_log_commit_cil().
    This occurs long after the transaction items and details have been
    removed from the transaction and effectively lost. This limited set
    of ticket data provides very little information to support debugging
    transaction overruns based on the typical report.
    
    To improve transaction log reservation overrun reporting, create a
    helper to dump transaction details such as log items, log vector
    data, etc., as well as the underlying ticket data for the
    transaction. Move the overrun detection from xfs_log_commit_cil() to
    xlog_cil_insert_items() so it occurs prior to migration of the
    logged items to the CIL. Call the new helper such that it is able to
    dump this transaction data before it is lost.
    
    Also, warn on overrun to provide callstack context for the offending
    transaction and include a few additional messages from
    xlog_cil_insert_items() to display the reservation consumed locally
    for overhead such as log vector headers, split region headers and
    the context ticket. This provides a complete general breakdown of
    the reservation consumption of a transaction when/if it happens to
    overrun the reservation.
    Signed-off-by: default avatarBrian Foster <bfoster@redhat.com>
    Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    d4ca1d55
xfs_log_priv.h 22.3 KB