• B
    xfs: reset dfops to initial state after finish · 509308b4
    Brian Foster 提交于
    xfs_defer_init() is currently used in two particular situations. The
    first and most obvious case is raw initialization of an
    xfs_defer_ops struct. The other case is partial reinit of
    xfs_defer_ops on reuse due to iteration.
    
    Most instances of the first case will be replaced by a single init
    of a dfops embedded in the transaction. Init calls are still
    technically required for the second case because the dfops may have
    low space mode enabled or have joined items that need to be reset
    before the dfops should be reused.
    
    Since the current dfops usage expects either a final transaction
    commit after xfs_defer_finish() or xfs_defer_init() if dfops is to
    be reused, we can shift some of the init logic into
    xfs_defer_finish() such that the latter returns with a reinitialized
    dfops. This eliminates the second dependency noted above such that a
    dfops is immediately ready for reuse after an xfs_defer_finish()
    without the need to change any calling code.
    Signed-off-by: NBrian Foster <bfoster@redhat.com>
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    Reviewed-by: NBill O'Donnell <billodo@redhat.com>
    Reviewed-by: NDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: NDarrick J. Wong <darrick.wong@oracle.com>
    509308b4
xfs_defer.c 17.2 KB