Message ID | 20210121154526.1852176-3-bfoster@redhat.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | xfs: rework log quiesce to cover the log | expand |
On Thu, Jan 21, 2021 at 10:45:19AM -0500, Brian Foster wrote: > The log covering helper checks whether the filesystem is writable to > determine whether to cover the log. The helper is currently only > called from the background log worker. In preparation to reuse the > helper from freezing contexts, lift the check into xfs_log_worker(). > > Signed-off-by: Brian Foster <bfoster@redhat.com> > Reviewed-by: Allison Henderson <allison.henderson@oracle.com> > Reviewed-by: Christoph Hellwig <hch@lst.de> Looks good to me, Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > fs/xfs/xfs_log.c | 18 ++++++++---------- > 1 file changed, 8 insertions(+), 10 deletions(-) > > diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c > index b445e63cbc3c..7280d99aa19c 100644 > --- a/fs/xfs/xfs_log.c > +++ b/fs/xfs/xfs_log.c > @@ -1049,14 +1049,12 @@ xfs_log_space_wake( > * there's no point in running a dummy transaction at this point because we > * can't start trying to idle the log until both the CIL and AIL are empty. > */ > -static int > -xfs_log_need_covered(xfs_mount_t *mp) > +static bool > +xfs_log_need_covered( > + struct xfs_mount *mp) > { > - struct xlog *log = mp->m_log; > - int needed = 0; > - > - if (!xfs_fs_writable(mp, SB_FREEZE_WRITE)) > - return 0; > + struct xlog *log = mp->m_log; > + bool needed = false; > > if (!xlog_cil_empty(log)) > return 0; > @@ -1074,14 +1072,14 @@ xfs_log_need_covered(xfs_mount_t *mp) > if (!xlog_iclogs_empty(log)) > break; > > - needed = 1; > + needed = true; > if (log->l_covered_state == XLOG_STATE_COVER_NEED) > log->l_covered_state = XLOG_STATE_COVER_DONE; > else > log->l_covered_state = XLOG_STATE_COVER_DONE2; > break; > default: > - needed = 1; > + needed = true; > break; > } > spin_unlock(&log->l_icloglock); > @@ -1271,7 +1269,7 @@ xfs_log_worker( > struct xfs_mount *mp = log->l_mp; > > /* dgc: errors ignored - not fatal and nowhere to report them */ > - if (xfs_log_need_covered(mp)) { > + if (xfs_fs_writable(mp, SB_FREEZE_WRITE) && xfs_log_need_covered(mp)) { > /* > * Dump a transaction into the log that contains no real change. > * This is needed to stamp the current tail LSN into the log > -- > 2.26.2 >
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index b445e63cbc3c..7280d99aa19c 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -1049,14 +1049,12 @@ xfs_log_space_wake( * there's no point in running a dummy transaction at this point because we * can't start trying to idle the log until both the CIL and AIL are empty. */ -static int -xfs_log_need_covered(xfs_mount_t *mp) +static bool +xfs_log_need_covered( + struct xfs_mount *mp) { - struct xlog *log = mp->m_log; - int needed = 0; - - if (!xfs_fs_writable(mp, SB_FREEZE_WRITE)) - return 0; + struct xlog *log = mp->m_log; + bool needed = false; if (!xlog_cil_empty(log)) return 0; @@ -1074,14 +1072,14 @@ xfs_log_need_covered(xfs_mount_t *mp) if (!xlog_iclogs_empty(log)) break; - needed = 1; + needed = true; if (log->l_covered_state == XLOG_STATE_COVER_NEED) log->l_covered_state = XLOG_STATE_COVER_DONE; else log->l_covered_state = XLOG_STATE_COVER_DONE2; break; default: - needed = 1; + needed = true; break; } spin_unlock(&log->l_icloglock); @@ -1271,7 +1269,7 @@ xfs_log_worker( struct xfs_mount *mp = log->l_mp; /* dgc: errors ignored - not fatal and nowhere to report them */ - if (xfs_log_need_covered(mp)) { + if (xfs_fs_writable(mp, SB_FREEZE_WRITE) && xfs_log_need_covered(mp)) { /* * Dump a transaction into the log that contains no real change. * This is needed to stamp the current tail LSN into the log