On Mon, Jul 26, 2021 at 04:07:16PM +1000, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > Because I cannot tell if the NEED_FLUSH flag is being set correctly > by the log force and CIL push machinery without it. > > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> Looks good, Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > --- > fs/xfs/xfs_log_priv.h | 13 ++++++++++--- > fs/xfs/xfs_trace.h | 5 ++++- > 2 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h > index 7cbde0b4f990..f3e79a45d60a 100644 > --- a/fs/xfs/xfs_log_priv.h > +++ b/fs/xfs/xfs_log_priv.h > @@ -59,6 +59,16 @@ enum xlog_iclog_state { > { XLOG_STATE_DIRTY, "XLOG_STATE_DIRTY" }, \ > { XLOG_STATE_IOERROR, "XLOG_STATE_IOERROR" } > > +/* > + * In core log flags > + */ > +#define XLOG_ICL_NEED_FLUSH (1 << 0) /* iclog needs REQ_PREFLUSH */ > +#define XLOG_ICL_NEED_FUA (1 << 1) /* iclog needs REQ_FUA */ > + > +#define XLOG_ICL_STRINGS \ > + { XLOG_ICL_NEED_FLUSH, "XLOG_ICL_NEED_FLUSH" }, \ > + { XLOG_ICL_NEED_FUA, "XLOG_ICL_NEED_FUA" } > + > > /* > * Log ticket flags > @@ -143,9 +153,6 @@ enum xlog_iclog_state { > > #define XLOG_COVER_OPS 5 > > -#define XLOG_ICL_NEED_FLUSH (1 << 0) /* iclog needs REQ_PREFLUSH */ > -#define XLOG_ICL_NEED_FUA (1 << 1) /* iclog needs REQ_FUA */ > - > /* Ticket reservation region accounting */ > #define XLOG_TIC_LEN_MAX 15 > > diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h > index f9d8d605f9b1..19260291ff8b 100644 > --- a/fs/xfs/xfs_trace.h > +++ b/fs/xfs/xfs_trace.h > @@ -3944,6 +3944,7 @@ DECLARE_EVENT_CLASS(xlog_iclog_class, > __field(uint32_t, state) > __field(int32_t, refcount) > __field(uint32_t, offset) > + __field(uint32_t, flags) > __field(unsigned long long, lsn) > __field(unsigned long, caller_ip) > ), > @@ -3952,15 +3953,17 @@ DECLARE_EVENT_CLASS(xlog_iclog_class, > __entry->state = iclog->ic_state; > __entry->refcount = atomic_read(&iclog->ic_refcnt); > __entry->offset = iclog->ic_offset; > + __entry->flags = iclog->ic_flags; > __entry->lsn = be64_to_cpu(iclog->ic_header.h_lsn); > __entry->caller_ip = caller_ip; > ), > - TP_printk("dev %d:%d state %s refcnt %d offset %u lsn 0x%llx caller %pS", > + TP_printk("dev %d:%d state %s refcnt %d offset %u lsn 0x%llx flags %s caller %pS", > MAJOR(__entry->dev), MINOR(__entry->dev), > __print_symbolic(__entry->state, XLOG_STATE_STRINGS), > __entry->refcount, > __entry->offset, > __entry->lsn, > + __print_flags(__entry->flags, "|", XLOG_ICL_STRINGS), > (char *)__entry->caller_ip) > > ); > -- > 2.31.1 >