On Mon, Mar 16, 2020 at 03:42:23PM +0100, Christoph Hellwig wrote: > There is no need to check for the ioerror state before the lock, as > the shutdown case is not a fast path. Also remove the call to force > shutdown the file system, as it must have been shut down already > for an iclog to be in the ioerror state. Also clean up the flow of > the function a bit. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > fs/xfs/xfs_log.c | 20 ++++++-------------- > 1 file changed, 6 insertions(+), 14 deletions(-) > > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > index 17ba92b115ea..7af9c292540b 100644 > --- a/fs/xfs/xfs_log.c > +++ b/fs/xfs/xfs_log.c > @@ -602,24 +602,16 @@ xfs_log_release_iclog( > struct xlog_in_core *iclog) > { > struct xlog *log = iclog->ic_log; > - bool sync; > - > - if (iclog->ic_state == XLOG_STATE_IOERROR) > - goto error; > + bool sync = false; > > if (atomic_dec_and_lock(&iclog->ic_refcnt, &log->l_icloglock)) { > - if (iclog->ic_state == XLOG_STATE_IOERROR) { > - spin_unlock(&log->l_icloglock); > - goto error; > - } > - sync = __xlog_state_release_iclog(log, iclog); > + if (iclog->ic_state != XLOG_STATE_IOERROR) > + sync = __xlog_state_release_iclog(log, iclog); > spin_unlock(&log->l_icloglock); > - if (sync) > - xlog_sync(log, iclog); > } > - return; > -error: > - xfs_force_shutdown(log->l_mp, SHUTDOWN_LOG_IO_ERROR); > + > + if (sync) > + xlog_sync(log, iclog); > } > > /* > -- > 2.24.1 >