• B
    xfs: defer agfl block frees from deferred ops processing context · 2bc5eba8
    Brian Foster 提交于
    Now that AGFL block frees are deferred when dfops is set in the
    transaction, start deferring AGFL block frees from contexts that are
    known to push the limits of existing log reservations.
    
    The first such context is deferred operation processing itself. This
    primarily targets deferred extent frees (such as file extents and
    inode chunks), but in doing so covers all allocation operations that
    occur in deferred operation processing context.
    
    Update xfs_defer_finish() to set and reset ->t_agfl_dfops across the
    processing sequence. This means that any AGFL block frees due to
    allocation events result in the addition of new EFIs to the dfops
    rather than being processed immediately. xfs_defer_finish() rolls
    the transaction at least once more to process the frees of the AGFL
    blocks back to the allocation btrees and returns once the AGFL is
    rectified.
    Signed-off-by: NBrian Foster <bfoster@redhat.com>
    Reviewed-by: NDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: NDarrick J. Wong <darrick.wong@oracle.com>
    2bc5eba8
xfs_defer.c 17.5 KB