Re: [PATCH] nfs: don't negate the op_status in nfs4_flexfiles_io_event tracepoints

From: Jeff Layton
Date: Mon Apr 07 2025 - 11:05:52 EST


On Mon, 2025-04-07 at 10:24 -0400, Jeff Layton wrote:
> In particular, doing this makes NFS4ERR_NXIO look like -ENXIO when
> the tracepoints fire.
>
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
> ---
> fs/nfs/nfs4trace.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
> index bc67fe6801b138204641319ecaf1115aac76af62..eb7d625d45e83f025ef96952660dded85aa0ca89 100644
> --- a/fs/nfs/nfs4trace.h
> +++ b/fs/nfs/nfs4trace.h
> @@ -2089,7 +2089,7 @@ DECLARE_EVENT_CLASS(nfs4_flexfiles_io_event,
> TP_printk(
> "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
> "offset=%llu count=%u stateid=%d:0x%08x dstaddr=%s",
> - -__entry->error,
> + __entry->error,

It looks like there is a related problem here too. In particular,
show_nfs4_status() calls __print_symbolic, but some of the entries in
the array are duplicates.

For instance, ENXIO == 6, but NFS4ERR_NXIO is also 6. The second entry
in that array will never be matched, because ENXIO will always be found
first.

If we're going to mix errnos and nfs error codes, maybe we should
change it to treat negative values as errnos and positive ones as NFS
errors?

> show_nfs4_status(__entry->error),
> MAJOR(__entry->dev), MINOR(__entry->dev),
> (unsigned long long)__entry->fileid,
>
> ---
> base-commit: e63b29244e588206f4d417ae27dc04bf1d58b982
> change-id: 20250407-nfs-testing-61217f89ee25
>
> Best regards,

--
Jeff Layton <jlayton@xxxxxxxxxx>