mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
xfs: refactor xfs_buf_ioend
Move the log recovery I/O completion handling entirely into the log recovery code, and re-arrange the normal I/O completion handler flow to prepare to lifting more logic into common code in the next commits. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
76b2d32346
commit
23fb5a93c2
|
|
@ -1197,33 +1197,26 @@ xfs_buf_ioend(
|
|||
if (!bp->b_error)
|
||||
bp->b_flags |= XBF_DONE;
|
||||
xfs_buf_ioend_finish(bp);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!bp->b_error) {
|
||||
bp->b_flags &= ~XBF_WRITE_FAIL;
|
||||
bp->b_flags |= XBF_DONE;
|
||||
}
|
||||
|
||||
/*
|
||||
* If this is a log recovery buffer, we aren't doing transactional IO
|
||||
* yet so we need to let it handle IO completions.
|
||||
*/
|
||||
if (bp->b_flags & _XBF_LOGRECOVERY) {
|
||||
} else if (bp->b_flags & _XBF_LOGRECOVERY) {
|
||||
/*
|
||||
* If this is a log recovery buffer, we aren't doing
|
||||
* transactional I/O yet so we need to let the log recovery code
|
||||
* handle I/O completions:
|
||||
*/
|
||||
xlog_recover_iodone(bp);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (!bp->b_error) {
|
||||
bp->b_flags &= ~XBF_WRITE_FAIL;
|
||||
bp->b_flags |= XBF_DONE;
|
||||
}
|
||||
|
||||
if (bp->b_flags & _XBF_INODES) {
|
||||
xfs_buf_inode_iodone(bp);
|
||||
return;
|
||||
if (bp->b_flags & _XBF_INODES)
|
||||
xfs_buf_inode_iodone(bp);
|
||||
else if (bp->b_flags & _XBF_DQUOTS)
|
||||
xfs_buf_dquot_iodone(bp);
|
||||
else
|
||||
xfs_buf_iodone(bp);
|
||||
}
|
||||
|
||||
if (bp->b_flags & _XBF_DQUOTS) {
|
||||
xfs_buf_dquot_iodone(bp);
|
||||
return;
|
||||
}
|
||||
xfs_buf_iodone(bp);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -269,15 +269,15 @@ void
|
|||
xlog_recover_iodone(
|
||||
struct xfs_buf *bp)
|
||||
{
|
||||
if (bp->b_error) {
|
||||
if (!bp->b_error) {
|
||||
bp->b_flags |= XBF_DONE;
|
||||
} else if (!XFS_FORCED_SHUTDOWN(bp->b_mount)) {
|
||||
/*
|
||||
* We're not going to bother about retrying
|
||||
* this during recovery. One strike!
|
||||
* We're not going to bother about retrying this during
|
||||
* recovery. One strike!
|
||||
*/
|
||||
if (!XFS_FORCED_SHUTDOWN(bp->b_mount)) {
|
||||
xfs_buf_ioerror_alert(bp, __this_address);
|
||||
xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR);
|
||||
}
|
||||
xfs_buf_ioerror_alert(bp, __this_address);
|
||||
xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user