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 >