On Thu, Mar 12, 2020 at 03:39:58PM +0100, Christoph Hellwig wrote: > When the log is shut down all iclogs are in the XLOG_STATE_IOERROR state, > which means that xlog_state_want_sync and xlog_state_release_iclog are > no-ops. Remove the whole section of code. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> Looks ok, Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > fs/xfs/xfs_log.c | 35 +++-------------------------------- > 1 file changed, 3 insertions(+), 32 deletions(-) > > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > index fa499ddedb94..b56432d4a9b8 100644 > --- a/fs/xfs/xfs_log.c > +++ b/fs/xfs/xfs_log.c > @@ -984,38 +984,9 @@ xfs_log_unmount_write(xfs_mount_t *mp) > iclog = iclog->ic_next; > } while (iclog != first_iclog); > #endif > - if (! (XLOG_FORCED_SHUTDOWN(log))) { > - xfs_log_write_unmount_record(mp); > - } else { > - /* > - * We're already in forced_shutdown mode, couldn't > - * even attempt to write out the unmount transaction. > - * > - * Go through the motions of sync'ing and releasing > - * the iclog, even though no I/O will actually happen, > - * we need to wait for other log I/Os that may already > - * be in progress. Do this as a separate section of > - * code so we'll know if we ever get stuck here that > - * we're in this odd situation of trying to unmount > - * a file system that went into forced_shutdown as > - * the result of an unmount.. > - */ > - spin_lock(&log->l_icloglock); > - iclog = log->l_iclog; > - atomic_inc(&iclog->ic_refcnt); > - xlog_state_want_sync(log, iclog); > - xlog_state_release_iclog(log, iclog); > - switch (iclog->ic_state) { > - case XLOG_STATE_ACTIVE: > - case XLOG_STATE_DIRTY: > - case XLOG_STATE_IOERROR: > - spin_unlock(&log->l_icloglock); > - break; > - default: > - xlog_wait(&iclog->ic_force_wait, &log->l_icloglock); > - break; > - } > - } > + if (XLOG_FORCED_SHUTDOWN(log)) > + return; > + xfs_log_write_unmount_record(mp); > } > > /* > -- > 2.24.1 >