Re: [PATCH 06/13] xfs: refactor xfs_buf_ioerror_fail_without_retry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 09, 2020 at 05:04:46PM +0200, Christoph Hellwig wrote:
> 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@xxxxxx>

Pretty straightforward,
Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

--D

> ---
>  fs/xfs/xfs_buf.c | 35 +++++++++++++++--------------------
>  1 file changed, 15 insertions(+), 20 deletions(-)
> 
> diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
> index e6a73e455caa1a..2f2ce3faab0826 100644
> --- a/fs/xfs/xfs_buf.c
> +++ b/fs/xfs/xfs_buf.c
> @@ -1172,36 +1172,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
> @@ -1282,7 +1265,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_);
> -- 
> 2.26.2
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux