• Dave Chinner's avatar
    xfs: attach iclog callbacks in xlog_cil_set_ctx_write_state() · caa80090
    Dave Chinner authored
    Now that we have a mechanism to guarantee that the callbacks
    attached to an iclog are owned by the context that attaches them
    until they drop their reference to the iclog via
    xlog_state_release_iclog(), we can attach callbacks to the iclog at
    any time we have an active reference to the iclog.
    
    xlog_state_get_iclog_space() always guarantees that the commit
    record will fit in the iclog it returns, so we can move this IO
    callback setting to xlog_cil_set_ctx_write_state(), record the
    commit iclog in the context and remove the need for the commit iclog
    to be returned by xlog_write() altogether.
    
    This, in turn, allows us to move the wakeup for ordered commit
    record writes up into xlog_cil_set_ctx_write_state(), too, because
    we have been guaranteed that this commit record will be physically
    located in the iclog before any waiting commit record at a higher
    sequence number will be granted iclog space.
    
    This further cleans up the post commit record write processing in
    the CIL push code, especially as xlog_state_release_iclog() will now
    clean up the context when shutdown errors occur.
    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>
    caa80090
xfs_log_priv.h 24.6 KB