On Tue, Mar 24, 2020 at 06:44:56PM +0100, Christoph Hellwig wrote: > Split the regrant case out of xlog_ticket_done and into a new > xlog_ticket_regrant helper. Merge both functions with the low-level > functions implementing the actual functionality and adjust the > tracepoints. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> > --- > fs/xfs/xfs_log.c | 84 ++++++++++++++----------------------------- > fs/xfs/xfs_log_cil.c | 9 +++-- > fs/xfs/xfs_log_priv.h | 4 +-- > fs/xfs/xfs_trace.h | 14 ++++---- > fs/xfs/xfs_trans.c | 9 +++-- > 5 files changed, 47 insertions(+), 73 deletions(-) > ... > diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h > index efc7751550d9..fbfdd9cf160d 100644 > --- a/fs/xfs/xfs_trace.h > +++ b/fs/xfs/xfs_trace.h ... > @@ -1011,12 +1009,12 @@ DEFINE_LOGGRANT_EVENT(xfs_log_reserve); > DEFINE_LOGGRANT_EVENT(xfs_log_reserve_exit); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant); > DEFINE_LOGGRANT_EVENT(xfs_log_regrant_exit); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_enter); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_exit); > -DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_sub); > -DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_enter); > -DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_exit); > -DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_sub); > +DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant); > +DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_exit); > +DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_sub); > +DEFINE_LOGGRANT_EVENT(xfs_log_ticket_done); > +DEFINE_LOGGRANT_EVENT(xfs_log_ticket_done_sub); > +DEFINE_LOGGRANT_EVENT(xfs_log_ticket_done_exit); > Any reason we carry over the vague 'done' naming to the lower level functions? xlog_ticket_[re|un]grant() seems more consistent and explicit to me, but either way: Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > DECLARE_EVENT_CLASS(xfs_log_item_class, > TP_PROTO(struct xfs_log_item *lip), > diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c > index 123ecc8435f6..d7c66c3331ec 100644 > --- a/fs/xfs/xfs_trans.c > +++ b/fs/xfs/xfs_trans.c > @@ -231,7 +231,7 @@ xfs_trans_reserve( > */ > undo_log: > if (resp->tr_logres > 0) { > - xlog_ticket_done(mp->m_log, tp->t_ticket, false); > + xlog_ticket_done(mp->m_log, tp->t_ticket); > tp->t_ticket = NULL; > tp->t_log_res = 0; > tp->t_flags &= ~XFS_TRANS_PERM_LOG_RES; > @@ -1001,7 +1001,10 @@ __xfs_trans_commit( > */ > xfs_trans_unreserve_and_mod_dquots(tp); > if (tp->t_ticket) { > - xlog_ticket_done(mp->m_log, tp->t_ticket, regrant); > + if (regrant && !XLOG_FORCED_SHUTDOWN(mp->m_log)) > + xlog_ticket_regrant(mp->m_log, tp->t_ticket); > + else > + xlog_ticket_done(mp->m_log, tp->t_ticket); > tp->t_ticket = NULL; > } > current_restore_flags_nested(&tp->t_pflags, PF_MEMALLOC_NOFS); > @@ -1060,7 +1063,7 @@ xfs_trans_cancel( > xfs_trans_unreserve_and_mod_dquots(tp); > > if (tp->t_ticket) { > - xlog_ticket_done(mp->m_log, tp->t_ticket, false); > + xlog_ticket_done(mp->m_log, tp->t_ticket); > tp->t_ticket = NULL; > } > > -- > 2.25.1 >