• Darrick J. Wong's avatar
    xfs: clean up scrub context if scrub setup returns -EDEADLOCK · 3f64c718
    Darrick J. Wong authored
    It has been a longstanding convention that online scrub and repair
    functions can return -EDEADLOCK to signal that they weren't able to
    obtain some necessary resource.  When this happens, the scrub framework
    is supposed to release all resources attached to the scrub context, set
    the TRY_HARDER flag in the scrub context flags, and try again.  In this
    context, individual scrub functions are supposed to take all the
    resources they (incorrectly) speculated were not necessary.
    
    We're about to make it so that the functions that lock and wait for a
    filesystem AG can also return EDEADLOCK to signal that we need to try
    again with the drain waiters enabled.  Therefore, refactor
    xfs_scrub_metadata to support this behavior for ->setup() functions.
    Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    3f64c718
scrub.c 17 KB