Re: [PATCH] NFSD: Resolve the recall-any mask names in the trace format

Jeff Layton <[email protected]>
Newsgroups org.kernel.vger.linux-nfs
Message-ID <[email protected]>
On Tue, 2026-08-18 at 14:41 -0400, Chuck Lever wrote:
> RCA4_TYPE_MASK_* are enum constants, so the preprocessor cannot fold
> them into the print format that show_rca_mask() builds for the
> nfsd_cb_recall_any event. Nothing declares an eval map for them
> either, so trace_event_eval_update() has no substitution to apply at
> module load, and the event's format file ships the enumerator names
> verbatim. trace-cmd and perf cannot decode the bmval0 field.
> 
> Declare the eval maps for the nine mask bits show_rca_mask() decodes.
> The format then carries the shift counts as integers, the same shape
> the SUNRPC trace points already emit from their BIT() flag decoders.
> 
> Fixes: 638593be55c0 ("NFSD: add CB_RECALL_ANY tracepoints")
> Signed-off-by: Chuck Lever <[email protected]>
> ---
>  fs/nfsd/trace.h | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
> index 3fa4d63cd30f..4fb1f32a3787 100644
> --- a/fs/nfsd/trace.h
> +++ b/fs/nfsd/trace.h
> @@ -1946,6 +1946,16 @@ TRACE_EVENT(nfsd_cb_offload,
>  		__entry->fh_hash, __entry->count, __entry->status)
>  );
>  
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_RDATA_DLG);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_WDATA_DLG);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_DIR_DLG);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_FILE_LAYOUT);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_BLK_LAYOUT);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_OBJ_LAYOUT_MIN);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_OBJ_LAYOUT_MAX);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_OTHER_LAYOUT_MIN);
> +TRACE_DEFINE_ENUM(RCA4_TYPE_MASK_OTHER_LAYOUT_MAX);
> +
>  #define show_rca_mask(x) \
>  	__print_flags(x, "|", \
>  		{ BIT(RCA4_TYPE_MASK_RDATA_DLG),	"RDATA_DLG" }, \

Reviewed-by: Jeff Layton <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.