• Dave Chinner's avatar
    xfs: separate out log shutdown callback processing · aad7272a
    Dave Chinner authored
    The iclog callback processing done during a forced log shutdown has
    different logic to normal runtime IO completion callback processing.
    Separate out the shutdown callbacks into their own function and call
    that from the shutdown code instead.
    
    We don't need this shutdown specific logic in the normal runtime
    completion code - we'll always run the shutdown version on shutdown,
    and it will do what shutdown needs regardless of whether there are
    racing IO completion callbacks scheduled or in progress. Hence we
    can also simplify the normal IO completion callpath and only abort
    if shutdown occurred while we actively were processing callbacks.
    
    Further, separating out the IO completion logic from the shutdown
    logic avoids callback race conditions from being triggered by log IO
    completion after a shutdown. IO completion will now only run
    callbacks on iclogs that are in the correct state for a callback to
    be run, avoiding the possibility of running callbacks on a
    referenced iclog that hasn't yet been submitted for IO.
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    aad7272a
xfs_log.c 111 KB