xfs: refactor xfs_buf_ioerror_fail_without_retry
xfs_buf_ioerror_fail_without_retry is a somewhat weird function in that it has two trivial checks that decide the return value, while the rest implements a ratelimited warning. Just lift the two checks into the caller, and give the remainder a suitable name. 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
							
								
									6a7584b1d8
								
							
						
					
					
						commit
						f58d0ea956
					
				| @ -1170,36 +1170,19 @@ xfs_buf_wait_unpin( | ||||
| 	set_current_state(TASK_RUNNING); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * Decide if we're going to retry the write after a failure, and prepare | ||||
|  * the buffer for retrying the write. | ||||
|  */ | ||||
| static bool | ||||
| xfs_buf_ioerror_fail_without_retry( | ||||
| static void | ||||
| xfs_buf_ioerror_alert_ratelimited( | ||||
| 	struct xfs_buf		*bp) | ||||
| { | ||||
| 	struct xfs_mount	*mp = bp->b_mount; | ||||
| 	static unsigned long	lasttime; | ||||
| 	static struct xfs_buftarg *lasttarg; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * If we've already decided to shutdown the filesystem because of | ||||
| 	 * I/O errors, there's no point in giving this a retry. | ||||
| 	 */ | ||||
| 	if (XFS_FORCED_SHUTDOWN(mp)) | ||||
| 		return true; | ||||
| 
 | ||||
| 	if (bp->b_target != lasttarg || | ||||
| 	    time_after(jiffies, (lasttime + 5*HZ))) { | ||||
| 		lasttime = jiffies; | ||||
| 		xfs_buf_ioerror_alert(bp, __this_address); | ||||
| 	} | ||||
| 	lasttarg = bp->b_target; | ||||
| 
 | ||||
| 	/* synchronous writes will have callers process the error */ | ||||
| 	if (!(bp->b_flags & XBF_ASYNC)) | ||||
| 		return true; | ||||
| 	return false; | ||||
| } | ||||
| 
 | ||||
| static bool | ||||
| @ -1280,7 +1263,19 @@ xfs_buf_ioend_disposition( | ||||
| 	if (likely(!bp->b_error)) | ||||
| 		return XBF_IOEND_FINISH; | ||||
| 
 | ||||
| 	if (xfs_buf_ioerror_fail_without_retry(bp)) | ||||
| 	/*
 | ||||
| 	 * If we've already decided to shutdown the filesystem because of I/O | ||||
| 	 * errors, there's no point in giving this a retry. | ||||
| 	 */ | ||||
| 	if (XFS_FORCED_SHUTDOWN(mp)) | ||||
| 		goto out_stale; | ||||
| 
 | ||||
| 	xfs_buf_ioerror_alert_ratelimited(bp); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Synchronous writes will have callers process the error. | ||||
| 	 */ | ||||
| 	if (!(bp->b_flags & XBF_ASYNC)) | ||||
| 		goto out_stale; | ||||
| 
 | ||||
| 	trace_xfs_buf_iodone_async(bp, _RET_IP_); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user