All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v1 1/2] NFS: Move generic FS show macros to global header
@ 2021-11-11 20:16 kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2021-11-11 20:16 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 8539 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <163466195619.4493.18063027404688028587.stgit@klimt.1015granger.net>
References: <163466195619.4493.18063027404688028587.stgit@klimt.1015granger.net>
TO: Chuck Lever <chuck.lever@oracle.com>

Hi Chuck,

I love your patch! Perhaps something to improve:

[auto build test WARNING on trondmy-nfs/linux-next]
[also build test WARNING on tip/perf/core v5.15]
[cannot apply to linus/master next-20211111]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Chuck-Lever/NFS-Move-generic-FS-show-macros-to-global-header/20211020-004721
base:   git://git.linux-nfs.org/projects/trondmy/linux-nfs.git linux-next
:::::: branch date: 3 weeks ago
:::::: commit date: 3 weeks ago
config: i386-randconfig-s001-20211019 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/274dee65138d9112c72dd8692a9c59228d3fcbd1
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Chuck-Lever/NFS-Move-generic-FS-show-macros-to-global-header/20211020-004721
        git checkout 274dee65138d9112c72dd8692a9c59228d3fcbd1
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash fs/nfs/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)
   fs/nfs/nfs4trace.c: note: in included file (through include/trace/trace_events.h, include/trace/define_trace.h, fs/nfs/nfs4trace.h):
>> fs/nfs/./nfs4trace.h:774:1: sparse: sparse: too long token expansion

vim +774 fs/nfs/./nfs4trace.h

2bb50aabb6f32c Chuck Lever       2019-12-23  773  
42113a75399353 Trond Myklebust   2013-08-12 @774  DECLARE_EVENT_CLASS(nfs4_open_event,
42113a75399353 Trond Myklebust   2013-08-12  775  		TP_PROTO(
42113a75399353 Trond Myklebust   2013-08-12  776  			const struct nfs_open_context *ctx,
42113a75399353 Trond Myklebust   2013-08-12  777  			int flags,
42113a75399353 Trond Myklebust   2013-08-12  778  			int error
42113a75399353 Trond Myklebust   2013-08-12  779  		),
42113a75399353 Trond Myklebust   2013-08-12  780  
42113a75399353 Trond Myklebust   2013-08-12  781  		TP_ARGS(ctx, flags, error),
42113a75399353 Trond Myklebust   2013-08-12  782  
42113a75399353 Trond Myklebust   2013-08-12  783  		TP_STRUCT__entry(
96650e2effa2db Chuck Lever       2019-06-19  784  			__field(unsigned long, error)
274dee65138d91 Chuck Lever       2021-10-19  785  			__field(unsigned long, flags)
274dee65138d91 Chuck Lever       2021-10-19  786  			__field(unsigned long, fmode)
42113a75399353 Trond Myklebust   2013-08-12  787  			__field(dev_t, dev)
42113a75399353 Trond Myklebust   2013-08-12  788  			__field(u32, fhandle)
42113a75399353 Trond Myklebust   2013-08-12  789  			__field(u64, fileid)
42113a75399353 Trond Myklebust   2013-08-12  790  			__field(u64, dir)
42113a75399353 Trond Myklebust   2013-08-12  791  			__string(name, ctx->dentry->d_name.name)
48c9579a1afe43 Olga Kornievskaia 2015-11-24  792  			__field(int, stateid_seq)
48c9579a1afe43 Olga Kornievskaia 2015-11-24  793  			__field(u32, stateid_hash)
48c9579a1afe43 Olga Kornievskaia 2015-11-24  794  			__field(int, openstateid_seq)
48c9579a1afe43 Olga Kornievskaia 2015-11-24  795  			__field(u32, openstateid_hash)
42113a75399353 Trond Myklebust   2013-08-12  796  		),
42113a75399353 Trond Myklebust   2013-08-12  797  
42113a75399353 Trond Myklebust   2013-08-12  798  		TP_fast_assign(
42113a75399353 Trond Myklebust   2013-08-12  799  			const struct nfs4_state *state = ctx->state;
42113a75399353 Trond Myklebust   2013-08-12  800  			const struct inode *inode = NULL;
42113a75399353 Trond Myklebust   2013-08-12  801  
96650e2effa2db Chuck Lever       2019-06-19  802  			__entry->error = -error;
42113a75399353 Trond Myklebust   2013-08-12  803  			__entry->flags = flags;
274dee65138d91 Chuck Lever       2021-10-19  804  			__entry->fmode = (__force unsigned long)ctx->mode;
42113a75399353 Trond Myklebust   2013-08-12  805  			__entry->dev = ctx->dentry->d_sb->s_dev;
48c9579a1afe43 Olga Kornievskaia 2015-11-24  806  			if (!IS_ERR_OR_NULL(state)) {
42113a75399353 Trond Myklebust   2013-08-12  807  				inode = state->inode;
48c9579a1afe43 Olga Kornievskaia 2015-11-24  808  				__entry->stateid_seq =
48c9579a1afe43 Olga Kornievskaia 2015-11-24  809  					be32_to_cpu(state->stateid.seqid);
48c9579a1afe43 Olga Kornievskaia 2015-11-24  810  				__entry->stateid_hash =
48c9579a1afe43 Olga Kornievskaia 2015-11-24  811  					nfs_stateid_hash(&state->stateid);
48c9579a1afe43 Olga Kornievskaia 2015-11-24  812  				__entry->openstateid_seq =
48c9579a1afe43 Olga Kornievskaia 2015-11-24  813  					be32_to_cpu(state->open_stateid.seqid);
48c9579a1afe43 Olga Kornievskaia 2015-11-24  814  				__entry->openstateid_hash =
48c9579a1afe43 Olga Kornievskaia 2015-11-24  815  					nfs_stateid_hash(&state->open_stateid);
48c9579a1afe43 Olga Kornievskaia 2015-11-24  816  			} else {
48c9579a1afe43 Olga Kornievskaia 2015-11-24  817  				__entry->stateid_seq = 0;
48c9579a1afe43 Olga Kornievskaia 2015-11-24  818  				__entry->stateid_hash = 0;
48c9579a1afe43 Olga Kornievskaia 2015-11-24  819  				__entry->openstateid_seq = 0;
48c9579a1afe43 Olga Kornievskaia 2015-11-24  820  				__entry->openstateid_hash = 0;
48c9579a1afe43 Olga Kornievskaia 2015-11-24  821  			}
42113a75399353 Trond Myklebust   2013-08-12  822  			if (inode != NULL) {
42113a75399353 Trond Myklebust   2013-08-12  823  				__entry->fileid = NFS_FILEID(inode);
42113a75399353 Trond Myklebust   2013-08-12  824  				__entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
42113a75399353 Trond Myklebust   2013-08-12  825  			} else {
42113a75399353 Trond Myklebust   2013-08-12  826  				__entry->fileid = 0;
42113a75399353 Trond Myklebust   2013-08-12  827  				__entry->fhandle = 0;
42113a75399353 Trond Myklebust   2013-08-12  828  			}
2b0143b5c986be David Howells     2015-03-17  829  			__entry->dir = NFS_FILEID(d_inode(ctx->dentry->d_parent));
42113a75399353 Trond Myklebust   2013-08-12  830  			__assign_str(name, ctx->dentry->d_name.name);
42113a75399353 Trond Myklebust   2013-08-12  831  		),
42113a75399353 Trond Myklebust   2013-08-12  832  
42113a75399353 Trond Myklebust   2013-08-12  833  		TP_printk(
274dee65138d91 Chuck Lever       2021-10-19  834  			"error=%ld (%s) flags=%lu (%s) fmode=%s "
42113a75399353 Trond Myklebust   2013-08-12  835  			"fileid=%02x:%02x:%llu fhandle=0x%08x "
48c9579a1afe43 Olga Kornievskaia 2015-11-24  836  			"name=%02x:%02x:%llu/%s stateid=%d:0x%08x "
48c9579a1afe43 Olga Kornievskaia 2015-11-24  837  			"openstateid=%d:0x%08x",
96650e2effa2db Chuck Lever       2019-06-19  838  			 -__entry->error,
42113a75399353 Trond Myklebust   2013-08-12  839  			 show_nfsv4_errors(__entry->error),
42113a75399353 Trond Myklebust   2013-08-12  840  			 __entry->flags,
274dee65138d91 Chuck Lever       2021-10-19  841  			 show_fs_fcntl_open_flags(__entry->flags),
274dee65138d91 Chuck Lever       2021-10-19  842  			 show_fs_fmode_flags(__entry->fmode),
42113a75399353 Trond Myklebust   2013-08-12  843  			 MAJOR(__entry->dev), MINOR(__entry->dev),
42113a75399353 Trond Myklebust   2013-08-12  844  			 (unsigned long long)__entry->fileid,
42113a75399353 Trond Myklebust   2013-08-12  845  			 __entry->fhandle,
42113a75399353 Trond Myklebust   2013-08-12  846  			 MAJOR(__entry->dev), MINOR(__entry->dev),
42113a75399353 Trond Myklebust   2013-08-12  847  			 (unsigned long long)__entry->dir,
48c9579a1afe43 Olga Kornievskaia 2015-11-24  848  			 __get_str(name),
48c9579a1afe43 Olga Kornievskaia 2015-11-24  849  			 __entry->stateid_seq, __entry->stateid_hash,
48c9579a1afe43 Olga Kornievskaia 2015-11-24  850  			 __entry->openstateid_seq, __entry->openstateid_hash
42113a75399353 Trond Myklebust   2013-08-12  851  		)
42113a75399353 Trond Myklebust   2013-08-12  852  );
42113a75399353 Trond Myklebust   2013-08-12  853  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31861 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 1/2] NFS: Move generic FS show macros to global header
  2021-10-22 19:16   ` Chuck Lever III
@ 2021-10-22 19:22     ` Olga Kornievskaia
  0 siblings, 0 replies; 5+ messages in thread
From: Olga Kornievskaia @ 2021-10-22 19:22 UTC (permalink / raw)
  To: Chuck Lever III; +Cc: Olga Kornievskaia, Linux NFS Mailing List

On Fri, Oct 22, 2021 at 3:16 PM Chuck Lever III <chuck.lever@oracle.com> wrote:
>
>
>
> > On Oct 22, 2021, at 3:14 PM, Olga Kornievskaia <aglo@umich.edu> wrote:
> >
> > On Tue, Oct 19, 2021 at 12:46 PM Chuck Lever <chuck.lever@oracle.com> wrote:
> >>
> >> Refactor: Surface useful show_ macros for use by other trace
> >> subsystems.
> >
> > This doesn't apply on top of Trond's origin/testing. Are there some
> > other dependencies I'm missing?
>
> The patch applies on top of v5.15-rc6. What fails to apply?

checking file fs/nfs/nfs4trace.h
Hunk #1 succeeded at 11 with fuzz 2 (offset 1 line).
Hunk #2 succeeded at 316 (offset 1 line).
Hunk #3 succeeded at 783 (offset 1 line).
Hunk #4 succeeded at 802 (offset 1 line).
Hunk #5 succeeded at 832 (offset 1 line).
Hunk #6 succeeded at 894 (offset 1 line).
Hunk #7 succeeded at 942 (offset 1 line).
Hunk #8 succeeded at 951 (offset 1 line).
Hunk #9 succeeded at 963 (offset 1 line).
Hunk #10 succeeded at 997 (offset 1 line).
Hunk #11 succeeded at 1033 (offset 1 line).
Hunk #12 succeeded at 1073 (offset 1 line).
Hunk #13 succeeded at 1191 (offset 1 line).
(Stripping trailing CRs from patch; use --binary to disable.)
checking file fs/nfs/nfstrace.h
Hunk #1 FAILED at 11.
Hunk #2 succeeded at 131 (offset -37 lines).
Hunk #3 succeeded at 222 (offset -37 lines).
Hunk #4 FAILED at 270.
Hunk #7 FAILED at 392.
Hunk #8 succeeded at 427 (offset -16 lines).
Hunk #9 succeeded at 437 (offset -16 lines).
Hunk #10 succeeded at 465 (offset -16 lines).
Hunk #11 succeeded at 476 (offset -16 lines).
Hunk #12 succeeded at 485 (offset -16 lines).
Hunk #13 succeeded at 519 (offset -16 lines).
Hunk #14 succeeded at 556 (offset -16 lines).
3 out of 14 hunks FAILED
The next patch would create the file include/trace/events/fs.h,

>
>
> >> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> >> ---
> >> fs/nfs/nfs4trace.h        |   67 ++++++---------------
> >> fs/nfs/nfstrace.h         |  118 +++++-------------------------------
> >> include/trace/events/fs.h |  146 +++++++++++++++++++++++++++++++++++++++++++++
> >> 3 files changed, 180 insertions(+), 151 deletions(-)
> >> create mode 100644 include/trace/events/fs.h
> >>
> >> diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
> >> index 7a2567aa2b86..b2f45c825f37 100644
> >> --- a/fs/nfs/nfs4trace.h
> >> +++ b/fs/nfs/nfs4trace.h
> >> @@ -10,6 +10,8 @@
> >>
> >> #include <linux/tracepoint.h>
> >>
> >> +#include <trace/events/fs.h>
> >> +
> >> TRACE_DEFINE_ENUM(EPERM);
> >> TRACE_DEFINE_ENUM(ENOENT);
> >> TRACE_DEFINE_ENUM(EIO);
> >> @@ -313,19 +315,6 @@ TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS);
> >>                { NFS4ERR_RESET_TO_MDS, "RESET_TO_MDS" }, \
> >>                { NFS4ERR_RESET_TO_PNFS, "RESET_TO_PNFS" })
> >>
> >> -#define show_open_flags(flags) \
> >> -       __print_flags(flags, "|", \
> >> -               { O_CREAT, "O_CREAT" }, \
> >> -               { O_EXCL, "O_EXCL" }, \
> >> -               { O_TRUNC, "O_TRUNC" }, \
> >> -               { O_DIRECT, "O_DIRECT" })
> >> -
> >> -#define show_fmode_flags(mode) \
> >> -       __print_flags(mode, "|", \
> >> -               { ((__force unsigned long)FMODE_READ), "READ" }, \
> >> -               { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
> >> -               { ((__force unsigned long)FMODE_EXEC), "EXEC" })
> >> -
> >> #define show_nfs_fattr_flags(valid) \
> >>        __print_flags((unsigned long)valid, "|", \
> >>                { NFS_ATTR_FATTR_TYPE, "TYPE" }, \
> >> @@ -793,8 +782,8 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
> >>
> >>                TP_STRUCT__entry(
> >>                        __field(unsigned long, error)
> >> -                       __field(unsigned int, flags)
> >> -                       __field(unsigned int, fmode)
> >> +                       __field(unsigned long, flags)
> >> +                       __field(unsigned long, fmode)
> >>                        __field(dev_t, dev)
> >>                        __field(u32, fhandle)
> >>                        __field(u64, fileid)
> >> @@ -812,7 +801,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
> >>
> >>                        __entry->error = -error;
> >>                        __entry->flags = flags;
> >> -                       __entry->fmode = (__force unsigned int)ctx->mode;
> >> +                       __entry->fmode = (__force unsigned long)ctx->mode;
> >>                        __entry->dev = ctx->dentry->d_sb->s_dev;
> >>                        if (!IS_ERR_OR_NULL(state)) {
> >>                                inode = state->inode;
> >> @@ -842,15 +831,15 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
> >>                ),
> >>
> >>                TP_printk(
> >> -                       "error=%ld (%s) flags=%d (%s) fmode=%s "
> >> +                       "error=%ld (%s) flags=%lu (%s) fmode=%s "
> >>                        "fileid=%02x:%02x:%llu fhandle=0x%08x "
> >>                        "name=%02x:%02x:%llu/%s stateid=%d:0x%08x "
> >>                        "openstateid=%d:0x%08x",
> >>                         -__entry->error,
> >>                         show_nfsv4_errors(__entry->error),
> >>                         __entry->flags,
> >> -                        show_open_flags(__entry->flags),
> >> -                        show_fmode_flags(__entry->fmode),
> >> +                        show_fs_fcntl_open_flags(__entry->flags),
> >> +                        show_fs_fmode_flags(__entry->fmode),
> >>                         MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                         (unsigned long long)__entry->fileid,
> >>                         __entry->fhandle,
> >> @@ -904,7 +893,7 @@ TRACE_EVENT(nfs4_cached_open,
> >>                TP_printk(
> >>                        "fmode=%s fileid=%02x:%02x:%llu "
> >>                        "fhandle=0x%08x stateid=%d:0x%08x",
> >> -                       __entry->fmode ?  show_fmode_flags(__entry->fmode) :
> >> +                       __entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
> >>                                          "closed",
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->fileid,
> >> @@ -952,7 +941,7 @@ TRACE_EVENT(nfs4_close,
> >>                        "fhandle=0x%08x openstateid=%d:0x%08x",
> >>                        -__entry->error,
> >>                        show_nfsv4_errors(__entry->error),
> >> -                       __entry->fmode ?  show_fmode_flags(__entry->fmode) :
> >> +                       __entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
> >>                                          "closed",
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->fileid,
> >> @@ -961,24 +950,6 @@ TRACE_EVENT(nfs4_close,
> >>                )
> >> );
> >>
> >> -TRACE_DEFINE_ENUM(F_GETLK);
> >> -TRACE_DEFINE_ENUM(F_SETLK);
> >> -TRACE_DEFINE_ENUM(F_SETLKW);
> >> -TRACE_DEFINE_ENUM(F_RDLCK);
> >> -TRACE_DEFINE_ENUM(F_WRLCK);
> >> -TRACE_DEFINE_ENUM(F_UNLCK);
> >> -
> >> -#define show_lock_cmd(type) \
> >> -       __print_symbolic((int)type, \
> >> -               { F_GETLK, "GETLK" }, \
> >> -               { F_SETLK, "SETLK" }, \
> >> -               { F_SETLKW, "SETLKW" })
> >> -#define show_lock_type(type) \
> >> -       __print_symbolic((int)type, \
> >> -               { F_RDLCK, "RDLCK" }, \
> >> -               { F_WRLCK, "WRLCK" }, \
> >> -               { F_UNLCK, "UNLCK" })
> >> -
> >> DECLARE_EVENT_CLASS(nfs4_lock_event,
> >>                TP_PROTO(
> >>                        const struct file_lock *request,
> >> @@ -991,8 +962,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
> >>
> >>                TP_STRUCT__entry(
> >>                        __field(unsigned long, error)
> >> -                       __field(int, cmd)
> >> -                       __field(char, type)
> >> +                       __field(unsigned long, cmd)
> >> +                       __field(unsigned long, type)
> >>                        __field(loff_t, start)
> >>                        __field(loff_t, end)
> >>                        __field(dev_t, dev)
> >> @@ -1025,8 +996,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
> >>                        "stateid=%d:0x%08x",
> >>                        -__entry->error,
> >>                        show_nfsv4_errors(__entry->error),
> >> -                       show_lock_cmd(__entry->cmd),
> >> -                       show_lock_type(__entry->type),
> >> +                       show_fs_fcntl_cmd(__entry->cmd),
> >> +                       show_fs_fcntl_lock_type(__entry->type),
> >>                        (long long)__entry->start,
> >>                        (long long)__entry->end,
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >> @@ -1061,8 +1032,8 @@ TRACE_EVENT(nfs4_set_lock,
> >>
> >>                TP_STRUCT__entry(
> >>                        __field(unsigned long, error)
> >> -                       __field(int, cmd)
> >> -                       __field(char, type)
> >> +                       __field(unsigned long, cmd)
> >> +                       __field(unsigned long, type)
> >>                        __field(loff_t, start)
> >>                        __field(loff_t, end)
> >>                        __field(dev_t, dev)
> >> @@ -1101,8 +1072,8 @@ TRACE_EVENT(nfs4_set_lock,
> >>                        "stateid=%d:0x%08x lockstateid=%d:0x%08x",
> >>                        -__entry->error,
> >>                        show_nfsv4_errors(__entry->error),
> >> -                       show_lock_cmd(__entry->cmd),
> >> -                       show_lock_type(__entry->type),
> >> +                       show_fs_fcntl_cmd(__entry->cmd),
> >> +                       show_fs_fcntl_lock_type(__entry->type),
> >>                        (long long)__entry->start,
> >>                        (long long)__entry->end,
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >> @@ -1219,7 +1190,7 @@ DECLARE_EVENT_CLASS(nfs4_set_delegation_event,
> >>
> >>                TP_printk(
> >>                        "fmode=%s fileid=%02x:%02x:%llu fhandle=0x%08x",
> >> -                       show_fmode_flags(__entry->fmode),
> >> +                       show_fs_fmode_flags(__entry->fmode),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->fileid,
> >>                        __entry->fhandle
> >> diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h
> >> index 8a224871be74..49d432c00bde 100644
> >> --- a/fs/nfs/nfstrace.h
> >> +++ b/fs/nfs/nfstrace.h
> >> @@ -11,27 +11,7 @@
> >> #include <linux/tracepoint.h>
> >> #include <linux/iversion.h>
> >>
> >> -TRACE_DEFINE_ENUM(DT_UNKNOWN);
> >> -TRACE_DEFINE_ENUM(DT_FIFO);
> >> -TRACE_DEFINE_ENUM(DT_CHR);
> >> -TRACE_DEFINE_ENUM(DT_DIR);
> >> -TRACE_DEFINE_ENUM(DT_BLK);
> >> -TRACE_DEFINE_ENUM(DT_REG);
> >> -TRACE_DEFINE_ENUM(DT_LNK);
> >> -TRACE_DEFINE_ENUM(DT_SOCK);
> >> -TRACE_DEFINE_ENUM(DT_WHT);
> >> -
> >> -#define nfs_show_file_type(ftype) \
> >> -       __print_symbolic(ftype, \
> >> -                       { DT_UNKNOWN, "UNKNOWN" }, \
> >> -                       { DT_FIFO, "FIFO" }, \
> >> -                       { DT_CHR, "CHR" }, \
> >> -                       { DT_DIR, "DIR" }, \
> >> -                       { DT_BLK, "BLK" }, \
> >> -                       { DT_REG, "REG" }, \
> >> -                       { DT_LNK, "LNK" }, \
> >> -                       { DT_SOCK, "SOCK" }, \
> >> -                       { DT_WHT, "WHT" })
> >> +#include <trace/events/fs.h>
> >>
> >> TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA);
> >> TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME);
> >> @@ -168,7 +148,7 @@ DECLARE_EVENT_CLASS(nfs_inode_event_done,
> >>                        (unsigned long long)__entry->fileid,
> >>                        __entry->fhandle,
> >>                        __entry->type,
> >> -                       nfs_show_file_type(__entry->type),
> >> +                       show_fs_dirent_type(__entry->type),
> >>                        (unsigned long long)__entry->version,
> >>                        (long long)__entry->size,
> >>                        __entry->cache_validity,
> >> @@ -259,7 +239,7 @@ TRACE_EVENT(nfs_access_exit,
> >>                        (unsigned long long)__entry->fileid,
> >>                        __entry->fhandle,
> >>                        __entry->type,
> >> -                       nfs_show_file_type(__entry->type),
> >> +                       show_fs_dirent_type(__entry->type),
> >>                        (unsigned long long)__entry->version,
> >>                        (long long)__entry->size,
> >>                        __entry->cache_validity,
> >> @@ -270,34 +250,6 @@ TRACE_EVENT(nfs_access_exit,
> >>                )
> >> );
> >>
> >> -TRACE_DEFINE_ENUM(LOOKUP_FOLLOW);
> >> -TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY);
> >> -TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT);
> >> -TRACE_DEFINE_ENUM(LOOKUP_PARENT);
> >> -TRACE_DEFINE_ENUM(LOOKUP_REVAL);
> >> -TRACE_DEFINE_ENUM(LOOKUP_RCU);
> >> -TRACE_DEFINE_ENUM(LOOKUP_OPEN);
> >> -TRACE_DEFINE_ENUM(LOOKUP_CREATE);
> >> -TRACE_DEFINE_ENUM(LOOKUP_EXCL);
> >> -TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET);
> >> -TRACE_DEFINE_ENUM(LOOKUP_EMPTY);
> >> -TRACE_DEFINE_ENUM(LOOKUP_DOWN);
> >> -
> >> -#define show_lookup_flags(flags) \
> >> -       __print_flags(flags, "|", \
> >> -                       { LOOKUP_FOLLOW, "FOLLOW" }, \
> >> -                       { LOOKUP_DIRECTORY, "DIRECTORY" }, \
> >> -                       { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
> >> -                       { LOOKUP_PARENT, "PARENT" }, \
> >> -                       { LOOKUP_REVAL, "REVAL" }, \
> >> -                       { LOOKUP_RCU, "RCU" }, \
> >> -                       { LOOKUP_OPEN, "OPEN" }, \
> >> -                       { LOOKUP_CREATE, "CREATE" }, \
> >> -                       { LOOKUP_EXCL, "EXCL" }, \
> >> -                       { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
> >> -                       { LOOKUP_EMPTY, "EMPTY" }, \
> >> -                       { LOOKUP_DOWN, "DOWN" })
> >> -
> >> DECLARE_EVENT_CLASS(nfs_lookup_event,
> >>                TP_PROTO(
> >>                        const struct inode *dir,
> >> @@ -324,7 +276,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event,
> >>                TP_printk(
> >>                        "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
> >>                        __entry->flags,
> >> -                       show_lookup_flags(__entry->flags),
> >> +                       show_fs_lookup_flags(__entry->flags),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->dir,
> >>                        __get_str(name)
> >> @@ -370,7 +322,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event_done,
> >>                        "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
> >>                        -__entry->error, nfs_show_status(__entry->error),
> >>                        __entry->flags,
> >> -                       show_lookup_flags(__entry->flags),
> >> +                       show_fs_lookup_flags(__entry->flags),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->dir,
> >>                        __get_str(name)
> >> @@ -392,46 +344,6 @@ DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
> >> DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
> >> DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
> >>
> >> -TRACE_DEFINE_ENUM(O_WRONLY);
> >> -TRACE_DEFINE_ENUM(O_RDWR);
> >> -TRACE_DEFINE_ENUM(O_CREAT);
> >> -TRACE_DEFINE_ENUM(O_EXCL);
> >> -TRACE_DEFINE_ENUM(O_NOCTTY);
> >> -TRACE_DEFINE_ENUM(O_TRUNC);
> >> -TRACE_DEFINE_ENUM(O_APPEND);
> >> -TRACE_DEFINE_ENUM(O_NONBLOCK);
> >> -TRACE_DEFINE_ENUM(O_DSYNC);
> >> -TRACE_DEFINE_ENUM(O_DIRECT);
> >> -TRACE_DEFINE_ENUM(O_LARGEFILE);
> >> -TRACE_DEFINE_ENUM(O_DIRECTORY);
> >> -TRACE_DEFINE_ENUM(O_NOFOLLOW);
> >> -TRACE_DEFINE_ENUM(O_NOATIME);
> >> -TRACE_DEFINE_ENUM(O_CLOEXEC);
> >> -
> >> -#define show_open_flags(flags) \
> >> -       __print_flags(flags, "|", \
> >> -               { O_WRONLY, "O_WRONLY" }, \
> >> -               { O_RDWR, "O_RDWR" }, \
> >> -               { O_CREAT, "O_CREAT" }, \
> >> -               { O_EXCL, "O_EXCL" }, \
> >> -               { O_NOCTTY, "O_NOCTTY" }, \
> >> -               { O_TRUNC, "O_TRUNC" }, \
> >> -               { O_APPEND, "O_APPEND" }, \
> >> -               { O_NONBLOCK, "O_NONBLOCK" }, \
> >> -               { O_DSYNC, "O_DSYNC" }, \
> >> -               { O_DIRECT, "O_DIRECT" }, \
> >> -               { O_LARGEFILE, "O_LARGEFILE" }, \
> >> -               { O_DIRECTORY, "O_DIRECTORY" }, \
> >> -               { O_NOFOLLOW, "O_NOFOLLOW" }, \
> >> -               { O_NOATIME, "O_NOATIME" }, \
> >> -               { O_CLOEXEC, "O_CLOEXEC" })
> >> -
> >> -#define show_fmode_flags(mode) \
> >> -       __print_flags(mode, "|", \
> >> -               { ((__force unsigned long)FMODE_READ), "READ" }, \
> >> -               { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
> >> -               { ((__force unsigned long)FMODE_EXEC), "EXEC" })
> >> -
> >> TRACE_EVENT(nfs_atomic_open_enter,
> >>                TP_PROTO(
> >>                        const struct inode *dir,
> >> @@ -443,7 +355,7 @@ TRACE_EVENT(nfs_atomic_open_enter,
> >>
> >>                TP_STRUCT__entry(
> >>                        __field(unsigned long, flags)
> >> -                       __field(unsigned int, fmode)
> >> +                       __field(unsigned long, fmode)
> >>                        __field(dev_t, dev)
> >>                        __field(u64, dir)
> >>                        __string(name, ctx->dentry->d_name.name)
> >> @@ -453,15 +365,15 @@ TRACE_EVENT(nfs_atomic_open_enter,
> >>                        __entry->dev = dir->i_sb->s_dev;
> >>                        __entry->dir = NFS_FILEID(dir);
> >>                        __entry->flags = flags;
> >> -                       __entry->fmode = (__force unsigned int)ctx->mode;
> >> +                       __entry->fmode = (__force unsigned long)ctx->mode;
> >>                        __assign_str(name, ctx->dentry->d_name.name);
> >>                ),
> >>
> >>                TP_printk(
> >>                        "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
> >>                        __entry->flags,
> >> -                       show_open_flags(__entry->flags),
> >> -                       show_fmode_flags(__entry->fmode),
> >> +                       show_fs_fcntl_open_flags(__entry->flags),
> >> +                       show_fs_fmode_flags(__entry->fmode),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->dir,
> >>                        __get_str(name)
> >> @@ -481,7 +393,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
> >>                TP_STRUCT__entry(
> >>                        __field(unsigned long, error)
> >>                        __field(unsigned long, flags)
> >> -                       __field(unsigned int, fmode)
> >> +                       __field(unsigned long, fmode)
> >>                        __field(dev_t, dev)
> >>                        __field(u64, dir)
> >>                        __string(name, ctx->dentry->d_name.name)
> >> @@ -492,7 +404,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
> >>                        __entry->dev = dir->i_sb->s_dev;
> >>                        __entry->dir = NFS_FILEID(dir);
> >>                        __entry->flags = flags;
> >> -                       __entry->fmode = (__force unsigned int)ctx->mode;
> >> +                       __entry->fmode = (__force unsigned long)ctx->mode;
> >>                        __assign_str(name, ctx->dentry->d_name.name);
> >>                ),
> >>
> >> @@ -501,8 +413,8 @@ TRACE_EVENT(nfs_atomic_open_exit,
> >>                        "name=%02x:%02x:%llu/%s",
> >>                        -__entry->error, nfs_show_status(__entry->error),
> >>                        __entry->flags,
> >> -                       show_open_flags(__entry->flags),
> >> -                       show_fmode_flags(__entry->fmode),
> >> +                       show_fs_fcntl_open_flags(__entry->flags),
> >> +                       show_fs_fmode_flags(__entry->fmode),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->dir,
> >>                        __get_str(name)
> >> @@ -535,7 +447,7 @@ TRACE_EVENT(nfs_create_enter,
> >>                TP_printk(
> >>                        "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
> >>                        __entry->flags,
> >> -                       show_open_flags(__entry->flags),
> >> +                       show_fs_fcntl_open_flags(__entry->flags),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->dir,
> >>                        __get_str(name)
> >> @@ -572,7 +484,7 @@ TRACE_EVENT(nfs_create_exit,
> >>                        "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
> >>                        -__entry->error, nfs_show_status(__entry->error),
> >>                        __entry->flags,
> >> -                       show_open_flags(__entry->flags),
> >> +                       show_fs_fcntl_open_flags(__entry->flags),
> >>                        MAJOR(__entry->dev), MINOR(__entry->dev),
> >>                        (unsigned long long)__entry->dir,
> >>                        __get_str(name)
> >> diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
> >> new file mode 100644
> >> index 000000000000..84e20c43d0c3
> >> --- /dev/null
> >> +++ b/include/trace/events/fs.h
> >> @@ -0,0 +1,146 @@
> >> +/* SPDX-License-Identifier: GPL-2.0 */
> >> +/*
> >> + * Display helpers for generic filesystem items
> >> + *
> >> + * Author: Chuck Lever <chuck.lever@oracle.com>
> >> + *
> >> + * Copyright (c) 2020, Oracle and/or its affiliates.
> >> + */
> >> +
> >> +#include <linux/fs.h>
> >> +
> >> +#define show_fs_dirent_type(x) \
> >> +       __print_symbolic(x, \
> >> +               { DT_UNKNOWN,           "UNKNOWN" }, \
> >> +               { DT_FIFO,              "FIFO" }, \
> >> +               { DT_CHR,               "CHR" }, \
> >> +               { DT_DIR,               "DIR" }, \
> >> +               { DT_BLK,               "BLK" }, \
> >> +               { DT_REG,               "REG" }, \
> >> +               { DT_LNK,               "LNK" }, \
> >> +               { DT_SOCK,              "SOCK" }, \
> >> +               { DT_WHT,               "WHT" })
> >> +
> >> +#define show_fs_fcntl_open_flags(x) \
> >> +       __print_flags(x, "|", \
> >> +               { O_WRONLY,             "O_WRONLY" }, \
> >> +               { O_RDWR,               "O_RDWR" }, \
> >> +               { O_CREAT,              "O_CREAT" }, \
> >> +               { O_EXCL,               "O_EXCL" }, \
> >> +               { O_NOCTTY,             "O_NOCTTY" }, \
> >> +               { O_TRUNC,              "O_TRUNC" }, \
> >> +               { O_APPEND,             "O_APPEND" }, \
> >> +               { O_NONBLOCK,           "O_NONBLOCK" }, \
> >> +               { O_DSYNC,              "O_DSYNC" }, \
> >> +               { O_DIRECT,             "O_DIRECT" }, \
> >> +               { O_LARGEFILE,          "O_LARGEFILE" }, \
> >> +               { O_DIRECTORY,          "O_DIRECTORY" }, \
> >> +               { O_NOFOLLOW,           "O_NOFOLLOW" }, \
> >> +               { O_NOATIME,            "O_NOATIME" }, \
> >> +               { O_CLOEXEC,            "O_CLOEXEC" })
> >> +
> >> +#define __fmode_flag(x)        { (__force unsigned long)FMODE_##x, #x }
> >> +#define show_fs_fmode_flags(x) \
> >> +       __print_flags(x, "|", \
> >> +               __fmode_flag(READ), \
> >> +               __fmode_flag(WRITE), \
> >> +               __fmode_flag(LSEEK), \
> >> +               __fmode_flag(PREAD), \
> >> +               __fmode_flag(PWRITE), \
> >> +               __fmode_flag(EXEC), \
> >> +               __fmode_flag(NDELAY), \
> >> +               __fmode_flag(EXCL), \
> >> +               __fmode_flag(WRITE_IOCTL), \
> >> +               __fmode_flag(32BITHASH), \
> >> +               __fmode_flag(64BITHASH), \
> >> +               __fmode_flag(NOCMTIME), \
> >> +               __fmode_flag(RANDOM), \
> >> +               __fmode_flag(UNSIGNED_OFFSET), \
> >> +               __fmode_flag(PATH), \
> >> +               __fmode_flag(ATOMIC_POS), \
> >> +               __fmode_flag(WRITER), \
> >> +               __fmode_flag(CAN_READ), \
> >> +               __fmode_flag(CAN_WRITE), \
> >> +               __fmode_flag(OPENED), \
> >> +               __fmode_flag(CREATED), \
> >> +               __fmode_flag(STREAM), \
> >> +               __fmode_flag(NONOTIFY), \
> >> +               __fmode_flag(NOWAIT), \
> >> +               __fmode_flag(NEED_UNMOUNT), \
> >> +               __fmode_flag(NOACCOUNT), \
> >> +               __fmode_flag(BUF_RASYNC))
> >> +
> >> +#ifdef CONFIG_64BIT
> >> +#define show_fs_fcntl_cmd(x) \
> >> +       __print_symbolic(x, \
> >> +               { F_DUPFD,              "DUPFD" }, \
> >> +               { F_GETFD,              "GETFD" }, \
> >> +               { F_SETFD,              "SETFD" }, \
> >> +               { F_GETFL,              "GETFL" }, \
> >> +               { F_SETFL,              "SETFL" }, \
> >> +               { F_GETLK,              "GETLK" }, \
> >> +               { F_SETLK,              "SETLK" }, \
> >> +               { F_SETLKW,             "SETLKW" }, \
> >> +               { F_SETOWN,             "SETOWN" }, \
> >> +               { F_GETOWN,             "GETOWN" }, \
> >> +               { F_SETSIG,             "SETSIG" }, \
> >> +               { F_GETSIG,             "GETSIG" }, \
> >> +               { F_SETOWN_EX,          "SETOWN_EX" }, \
> >> +               { F_GETOWN_EX,          "GETOWN_EX" }, \
> >> +               { F_GETOWNER_UIDS,      "GETOWNER_UIDS" }, \
> >> +               { F_OFD_GETLK,          "OFD_GETLK" }, \
> >> +               { F_OFD_SETLK,          "OFD_SETLK" }, \
> >> +               { F_OFD_SETLKW,         "OFD_SETLKW" })
> >> +#else /* CONFIG_64BIT */
> >> +#define show_fs_fcntl_cmd(x) \
> >> +       __print_symbolic(x, \
> >> +               { F_DUPFD,              "DUPFD" }, \
> >> +               { F_GETFD,              "GETFD" }, \
> >> +               { F_SETFD,              "SETFD" }, \
> >> +               { F_GETFL,              "GETFL" }, \
> >> +               { F_SETFL,              "SETFL" }, \
> >> +               { F_GETLK,              "GETLK" }, \
> >> +               { F_SETLK,              "SETLK" }, \
> >> +               { F_SETLKW,             "SETLKW" }, \
> >> +               { F_SETOWN,             "SETOWN" }, \
> >> +               { F_GETOWN,             "GETOWN" }, \
> >> +               { F_SETSIG,             "SETSIG" }, \
> >> +               { F_GETSIG,             "GETSIG" }, \
> >> +               { F_GETLK64,            "GETLK64" }, \
> >> +               { F_SETLK64,            "SETLK64" }, \
> >> +               { F_SETLKW64,           "SETLKW64" }, \
> >> +               { F_SETOWN_EX,          "SETOWN_EX" }, \
> >> +               { F_GETOWN_EX,          "GETOWN_EX" }, \
> >> +               { F_GETOWNER_UIDS,      "GETOWNER_UIDS" }, \
> >> +               { F_OFD_GETLK,          "OFD_GETLK" }, \
> >> +               { F_OFD_SETLK,          "OFD_SETLK" }, \
> >> +               { F_OFD_SETLKW,         "OFD_SETLKW" })
> >> +#endif /* CONFIG_64BIT */
> >> +
> >> +#define show_fs_fcntl_lock_type(x) \
> >> +       __print_symbolic(x, \
> >> +               { F_RDLCK,              "RDLCK" }, \
> >> +               { F_WRLCK,              "WRLCK" }, \
> >> +               { F_UNLCK,              "UNLCK" })
> >> +
> >> +#define show_fs_lookup_flags(flags) \
> >> +       __print_flags(flags, "|", \
> >> +               { LOOKUP_FOLLOW,        "FOLLOW" }, \
> >> +               { LOOKUP_DIRECTORY,     "DIRECTORY" }, \
> >> +               { LOOKUP_AUTOMOUNT,     "AUTOMOUNT" }, \
> >> +               { LOOKUP_EMPTY,         "EMPTY" }, \
> >> +               { LOOKUP_DOWN,          "DOWN" }, \
> >> +               { LOOKUP_MOUNTPOINT,    "MOUNTPOINT" }, \
> >> +               { LOOKUP_REVAL,         "REVAL" }, \
> >> +               { LOOKUP_RCU,           "RCU" }, \
> >> +               { LOOKUP_OPEN,          "OPEN" }, \
> >> +               { LOOKUP_CREATE,        "CREATE" }, \
> >> +               { LOOKUP_EXCL,          "EXCL" }, \
> >> +               { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
> >> +               { LOOKUP_PARENT,        "PARENT" }, \
> >> +               { LOOKUP_NO_SYMLINKS,   "NO_SYMLINKS" }, \
> >> +               { LOOKUP_NO_MAGICLINKS, "NO_MAGICLINKS" }, \
> >> +               { LOOKUP_NO_XDEV,       "NO_XDEV" }, \
> >> +               { LOOKUP_BENEATH,       "BENEATH" }, \
> >> +               { LOOKUP_IN_ROOT,       "IN_ROOT" }, \
> >> +               { LOOKUP_CACHED,        "CACHED" })
> >>
>
> --
> Chuck Lever
>
>
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 1/2] NFS: Move generic FS show macros to global header
  2021-10-22 19:14 ` Olga Kornievskaia
@ 2021-10-22 19:16   ` Chuck Lever III
  2021-10-22 19:22     ` Olga Kornievskaia
  0 siblings, 1 reply; 5+ messages in thread
From: Chuck Lever III @ 2021-10-22 19:16 UTC (permalink / raw)
  To: Olga Kornievskaia; +Cc: Olga Kornievskaia, Linux NFS Mailing List



> On Oct 22, 2021, at 3:14 PM, Olga Kornievskaia <aglo@umich.edu> wrote:
> 
> On Tue, Oct 19, 2021 at 12:46 PM Chuck Lever <chuck.lever@oracle.com> wrote:
>> 
>> Refactor: Surface useful show_ macros for use by other trace
>> subsystems.
> 
> This doesn't apply on top of Trond's origin/testing. Are there some
> other dependencies I'm missing?

The patch applies on top of v5.15-rc6. What fails to apply?


>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>> ---
>> fs/nfs/nfs4trace.h        |   67 ++++++---------------
>> fs/nfs/nfstrace.h         |  118 +++++-------------------------------
>> include/trace/events/fs.h |  146 +++++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 180 insertions(+), 151 deletions(-)
>> create mode 100644 include/trace/events/fs.h
>> 
>> diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
>> index 7a2567aa2b86..b2f45c825f37 100644
>> --- a/fs/nfs/nfs4trace.h
>> +++ b/fs/nfs/nfs4trace.h
>> @@ -10,6 +10,8 @@
>> 
>> #include <linux/tracepoint.h>
>> 
>> +#include <trace/events/fs.h>
>> +
>> TRACE_DEFINE_ENUM(EPERM);
>> TRACE_DEFINE_ENUM(ENOENT);
>> TRACE_DEFINE_ENUM(EIO);
>> @@ -313,19 +315,6 @@ TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS);
>>                { NFS4ERR_RESET_TO_MDS, "RESET_TO_MDS" }, \
>>                { NFS4ERR_RESET_TO_PNFS, "RESET_TO_PNFS" })
>> 
>> -#define show_open_flags(flags) \
>> -       __print_flags(flags, "|", \
>> -               { O_CREAT, "O_CREAT" }, \
>> -               { O_EXCL, "O_EXCL" }, \
>> -               { O_TRUNC, "O_TRUNC" }, \
>> -               { O_DIRECT, "O_DIRECT" })
>> -
>> -#define show_fmode_flags(mode) \
>> -       __print_flags(mode, "|", \
>> -               { ((__force unsigned long)FMODE_READ), "READ" }, \
>> -               { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
>> -               { ((__force unsigned long)FMODE_EXEC), "EXEC" })
>> -
>> #define show_nfs_fattr_flags(valid) \
>>        __print_flags((unsigned long)valid, "|", \
>>                { NFS_ATTR_FATTR_TYPE, "TYPE" }, \
>> @@ -793,8 +782,8 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
>> 
>>                TP_STRUCT__entry(
>>                        __field(unsigned long, error)
>> -                       __field(unsigned int, flags)
>> -                       __field(unsigned int, fmode)
>> +                       __field(unsigned long, flags)
>> +                       __field(unsigned long, fmode)
>>                        __field(dev_t, dev)
>>                        __field(u32, fhandle)
>>                        __field(u64, fileid)
>> @@ -812,7 +801,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
>> 
>>                        __entry->error = -error;
>>                        __entry->flags = flags;
>> -                       __entry->fmode = (__force unsigned int)ctx->mode;
>> +                       __entry->fmode = (__force unsigned long)ctx->mode;
>>                        __entry->dev = ctx->dentry->d_sb->s_dev;
>>                        if (!IS_ERR_OR_NULL(state)) {
>>                                inode = state->inode;
>> @@ -842,15 +831,15 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
>>                ),
>> 
>>                TP_printk(
>> -                       "error=%ld (%s) flags=%d (%s) fmode=%s "
>> +                       "error=%ld (%s) flags=%lu (%s) fmode=%s "
>>                        "fileid=%02x:%02x:%llu fhandle=0x%08x "
>>                        "name=%02x:%02x:%llu/%s stateid=%d:0x%08x "
>>                        "openstateid=%d:0x%08x",
>>                         -__entry->error,
>>                         show_nfsv4_errors(__entry->error),
>>                         __entry->flags,
>> -                        show_open_flags(__entry->flags),
>> -                        show_fmode_flags(__entry->fmode),
>> +                        show_fs_fcntl_open_flags(__entry->flags),
>> +                        show_fs_fmode_flags(__entry->fmode),
>>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>>                         (unsigned long long)__entry->fileid,
>>                         __entry->fhandle,
>> @@ -904,7 +893,7 @@ TRACE_EVENT(nfs4_cached_open,
>>                TP_printk(
>>                        "fmode=%s fileid=%02x:%02x:%llu "
>>                        "fhandle=0x%08x stateid=%d:0x%08x",
>> -                       __entry->fmode ?  show_fmode_flags(__entry->fmode) :
>> +                       __entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
>>                                          "closed",
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->fileid,
>> @@ -952,7 +941,7 @@ TRACE_EVENT(nfs4_close,
>>                        "fhandle=0x%08x openstateid=%d:0x%08x",
>>                        -__entry->error,
>>                        show_nfsv4_errors(__entry->error),
>> -                       __entry->fmode ?  show_fmode_flags(__entry->fmode) :
>> +                       __entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
>>                                          "closed",
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->fileid,
>> @@ -961,24 +950,6 @@ TRACE_EVENT(nfs4_close,
>>                )
>> );
>> 
>> -TRACE_DEFINE_ENUM(F_GETLK);
>> -TRACE_DEFINE_ENUM(F_SETLK);
>> -TRACE_DEFINE_ENUM(F_SETLKW);
>> -TRACE_DEFINE_ENUM(F_RDLCK);
>> -TRACE_DEFINE_ENUM(F_WRLCK);
>> -TRACE_DEFINE_ENUM(F_UNLCK);
>> -
>> -#define show_lock_cmd(type) \
>> -       __print_symbolic((int)type, \
>> -               { F_GETLK, "GETLK" }, \
>> -               { F_SETLK, "SETLK" }, \
>> -               { F_SETLKW, "SETLKW" })
>> -#define show_lock_type(type) \
>> -       __print_symbolic((int)type, \
>> -               { F_RDLCK, "RDLCK" }, \
>> -               { F_WRLCK, "WRLCK" }, \
>> -               { F_UNLCK, "UNLCK" })
>> -
>> DECLARE_EVENT_CLASS(nfs4_lock_event,
>>                TP_PROTO(
>>                        const struct file_lock *request,
>> @@ -991,8 +962,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
>> 
>>                TP_STRUCT__entry(
>>                        __field(unsigned long, error)
>> -                       __field(int, cmd)
>> -                       __field(char, type)
>> +                       __field(unsigned long, cmd)
>> +                       __field(unsigned long, type)
>>                        __field(loff_t, start)
>>                        __field(loff_t, end)
>>                        __field(dev_t, dev)
>> @@ -1025,8 +996,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
>>                        "stateid=%d:0x%08x",
>>                        -__entry->error,
>>                        show_nfsv4_errors(__entry->error),
>> -                       show_lock_cmd(__entry->cmd),
>> -                       show_lock_type(__entry->type),
>> +                       show_fs_fcntl_cmd(__entry->cmd),
>> +                       show_fs_fcntl_lock_type(__entry->type),
>>                        (long long)__entry->start,
>>                        (long long)__entry->end,
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>> @@ -1061,8 +1032,8 @@ TRACE_EVENT(nfs4_set_lock,
>> 
>>                TP_STRUCT__entry(
>>                        __field(unsigned long, error)
>> -                       __field(int, cmd)
>> -                       __field(char, type)
>> +                       __field(unsigned long, cmd)
>> +                       __field(unsigned long, type)
>>                        __field(loff_t, start)
>>                        __field(loff_t, end)
>>                        __field(dev_t, dev)
>> @@ -1101,8 +1072,8 @@ TRACE_EVENT(nfs4_set_lock,
>>                        "stateid=%d:0x%08x lockstateid=%d:0x%08x",
>>                        -__entry->error,
>>                        show_nfsv4_errors(__entry->error),
>> -                       show_lock_cmd(__entry->cmd),
>> -                       show_lock_type(__entry->type),
>> +                       show_fs_fcntl_cmd(__entry->cmd),
>> +                       show_fs_fcntl_lock_type(__entry->type),
>>                        (long long)__entry->start,
>>                        (long long)__entry->end,
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>> @@ -1219,7 +1190,7 @@ DECLARE_EVENT_CLASS(nfs4_set_delegation_event,
>> 
>>                TP_printk(
>>                        "fmode=%s fileid=%02x:%02x:%llu fhandle=0x%08x",
>> -                       show_fmode_flags(__entry->fmode),
>> +                       show_fs_fmode_flags(__entry->fmode),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->fileid,
>>                        __entry->fhandle
>> diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h
>> index 8a224871be74..49d432c00bde 100644
>> --- a/fs/nfs/nfstrace.h
>> +++ b/fs/nfs/nfstrace.h
>> @@ -11,27 +11,7 @@
>> #include <linux/tracepoint.h>
>> #include <linux/iversion.h>
>> 
>> -TRACE_DEFINE_ENUM(DT_UNKNOWN);
>> -TRACE_DEFINE_ENUM(DT_FIFO);
>> -TRACE_DEFINE_ENUM(DT_CHR);
>> -TRACE_DEFINE_ENUM(DT_DIR);
>> -TRACE_DEFINE_ENUM(DT_BLK);
>> -TRACE_DEFINE_ENUM(DT_REG);
>> -TRACE_DEFINE_ENUM(DT_LNK);
>> -TRACE_DEFINE_ENUM(DT_SOCK);
>> -TRACE_DEFINE_ENUM(DT_WHT);
>> -
>> -#define nfs_show_file_type(ftype) \
>> -       __print_symbolic(ftype, \
>> -                       { DT_UNKNOWN, "UNKNOWN" }, \
>> -                       { DT_FIFO, "FIFO" }, \
>> -                       { DT_CHR, "CHR" }, \
>> -                       { DT_DIR, "DIR" }, \
>> -                       { DT_BLK, "BLK" }, \
>> -                       { DT_REG, "REG" }, \
>> -                       { DT_LNK, "LNK" }, \
>> -                       { DT_SOCK, "SOCK" }, \
>> -                       { DT_WHT, "WHT" })
>> +#include <trace/events/fs.h>
>> 
>> TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA);
>> TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME);
>> @@ -168,7 +148,7 @@ DECLARE_EVENT_CLASS(nfs_inode_event_done,
>>                        (unsigned long long)__entry->fileid,
>>                        __entry->fhandle,
>>                        __entry->type,
>> -                       nfs_show_file_type(__entry->type),
>> +                       show_fs_dirent_type(__entry->type),
>>                        (unsigned long long)__entry->version,
>>                        (long long)__entry->size,
>>                        __entry->cache_validity,
>> @@ -259,7 +239,7 @@ TRACE_EVENT(nfs_access_exit,
>>                        (unsigned long long)__entry->fileid,
>>                        __entry->fhandle,
>>                        __entry->type,
>> -                       nfs_show_file_type(__entry->type),
>> +                       show_fs_dirent_type(__entry->type),
>>                        (unsigned long long)__entry->version,
>>                        (long long)__entry->size,
>>                        __entry->cache_validity,
>> @@ -270,34 +250,6 @@ TRACE_EVENT(nfs_access_exit,
>>                )
>> );
>> 
>> -TRACE_DEFINE_ENUM(LOOKUP_FOLLOW);
>> -TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY);
>> -TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT);
>> -TRACE_DEFINE_ENUM(LOOKUP_PARENT);
>> -TRACE_DEFINE_ENUM(LOOKUP_REVAL);
>> -TRACE_DEFINE_ENUM(LOOKUP_RCU);
>> -TRACE_DEFINE_ENUM(LOOKUP_OPEN);
>> -TRACE_DEFINE_ENUM(LOOKUP_CREATE);
>> -TRACE_DEFINE_ENUM(LOOKUP_EXCL);
>> -TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET);
>> -TRACE_DEFINE_ENUM(LOOKUP_EMPTY);
>> -TRACE_DEFINE_ENUM(LOOKUP_DOWN);
>> -
>> -#define show_lookup_flags(flags) \
>> -       __print_flags(flags, "|", \
>> -                       { LOOKUP_FOLLOW, "FOLLOW" }, \
>> -                       { LOOKUP_DIRECTORY, "DIRECTORY" }, \
>> -                       { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
>> -                       { LOOKUP_PARENT, "PARENT" }, \
>> -                       { LOOKUP_REVAL, "REVAL" }, \
>> -                       { LOOKUP_RCU, "RCU" }, \
>> -                       { LOOKUP_OPEN, "OPEN" }, \
>> -                       { LOOKUP_CREATE, "CREATE" }, \
>> -                       { LOOKUP_EXCL, "EXCL" }, \
>> -                       { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
>> -                       { LOOKUP_EMPTY, "EMPTY" }, \
>> -                       { LOOKUP_DOWN, "DOWN" })
>> -
>> DECLARE_EVENT_CLASS(nfs_lookup_event,
>>                TP_PROTO(
>>                        const struct inode *dir,
>> @@ -324,7 +276,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event,
>>                TP_printk(
>>                        "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>>                        __entry->flags,
>> -                       show_lookup_flags(__entry->flags),
>> +                       show_fs_lookup_flags(__entry->flags),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->dir,
>>                        __get_str(name)
>> @@ -370,7 +322,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event_done,
>>                        "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>>                        -__entry->error, nfs_show_status(__entry->error),
>>                        __entry->flags,
>> -                       show_lookup_flags(__entry->flags),
>> +                       show_fs_lookup_flags(__entry->flags),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->dir,
>>                        __get_str(name)
>> @@ -392,46 +344,6 @@ DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
>> DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
>> DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
>> 
>> -TRACE_DEFINE_ENUM(O_WRONLY);
>> -TRACE_DEFINE_ENUM(O_RDWR);
>> -TRACE_DEFINE_ENUM(O_CREAT);
>> -TRACE_DEFINE_ENUM(O_EXCL);
>> -TRACE_DEFINE_ENUM(O_NOCTTY);
>> -TRACE_DEFINE_ENUM(O_TRUNC);
>> -TRACE_DEFINE_ENUM(O_APPEND);
>> -TRACE_DEFINE_ENUM(O_NONBLOCK);
>> -TRACE_DEFINE_ENUM(O_DSYNC);
>> -TRACE_DEFINE_ENUM(O_DIRECT);
>> -TRACE_DEFINE_ENUM(O_LARGEFILE);
>> -TRACE_DEFINE_ENUM(O_DIRECTORY);
>> -TRACE_DEFINE_ENUM(O_NOFOLLOW);
>> -TRACE_DEFINE_ENUM(O_NOATIME);
>> -TRACE_DEFINE_ENUM(O_CLOEXEC);
>> -
>> -#define show_open_flags(flags) \
>> -       __print_flags(flags, "|", \
>> -               { O_WRONLY, "O_WRONLY" }, \
>> -               { O_RDWR, "O_RDWR" }, \
>> -               { O_CREAT, "O_CREAT" }, \
>> -               { O_EXCL, "O_EXCL" }, \
>> -               { O_NOCTTY, "O_NOCTTY" }, \
>> -               { O_TRUNC, "O_TRUNC" }, \
>> -               { O_APPEND, "O_APPEND" }, \
>> -               { O_NONBLOCK, "O_NONBLOCK" }, \
>> -               { O_DSYNC, "O_DSYNC" }, \
>> -               { O_DIRECT, "O_DIRECT" }, \
>> -               { O_LARGEFILE, "O_LARGEFILE" }, \
>> -               { O_DIRECTORY, "O_DIRECTORY" }, \
>> -               { O_NOFOLLOW, "O_NOFOLLOW" }, \
>> -               { O_NOATIME, "O_NOATIME" }, \
>> -               { O_CLOEXEC, "O_CLOEXEC" })
>> -
>> -#define show_fmode_flags(mode) \
>> -       __print_flags(mode, "|", \
>> -               { ((__force unsigned long)FMODE_READ), "READ" }, \
>> -               { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
>> -               { ((__force unsigned long)FMODE_EXEC), "EXEC" })
>> -
>> TRACE_EVENT(nfs_atomic_open_enter,
>>                TP_PROTO(
>>                        const struct inode *dir,
>> @@ -443,7 +355,7 @@ TRACE_EVENT(nfs_atomic_open_enter,
>> 
>>                TP_STRUCT__entry(
>>                        __field(unsigned long, flags)
>> -                       __field(unsigned int, fmode)
>> +                       __field(unsigned long, fmode)
>>                        __field(dev_t, dev)
>>                        __field(u64, dir)
>>                        __string(name, ctx->dentry->d_name.name)
>> @@ -453,15 +365,15 @@ TRACE_EVENT(nfs_atomic_open_enter,
>>                        __entry->dev = dir->i_sb->s_dev;
>>                        __entry->dir = NFS_FILEID(dir);
>>                        __entry->flags = flags;
>> -                       __entry->fmode = (__force unsigned int)ctx->mode;
>> +                       __entry->fmode = (__force unsigned long)ctx->mode;
>>                        __assign_str(name, ctx->dentry->d_name.name);
>>                ),
>> 
>>                TP_printk(
>>                        "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
>>                        __entry->flags,
>> -                       show_open_flags(__entry->flags),
>> -                       show_fmode_flags(__entry->fmode),
>> +                       show_fs_fcntl_open_flags(__entry->flags),
>> +                       show_fs_fmode_flags(__entry->fmode),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->dir,
>>                        __get_str(name)
>> @@ -481,7 +393,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
>>                TP_STRUCT__entry(
>>                        __field(unsigned long, error)
>>                        __field(unsigned long, flags)
>> -                       __field(unsigned int, fmode)
>> +                       __field(unsigned long, fmode)
>>                        __field(dev_t, dev)
>>                        __field(u64, dir)
>>                        __string(name, ctx->dentry->d_name.name)
>> @@ -492,7 +404,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
>>                        __entry->dev = dir->i_sb->s_dev;
>>                        __entry->dir = NFS_FILEID(dir);
>>                        __entry->flags = flags;
>> -                       __entry->fmode = (__force unsigned int)ctx->mode;
>> +                       __entry->fmode = (__force unsigned long)ctx->mode;
>>                        __assign_str(name, ctx->dentry->d_name.name);
>>                ),
>> 
>> @@ -501,8 +413,8 @@ TRACE_EVENT(nfs_atomic_open_exit,
>>                        "name=%02x:%02x:%llu/%s",
>>                        -__entry->error, nfs_show_status(__entry->error),
>>                        __entry->flags,
>> -                       show_open_flags(__entry->flags),
>> -                       show_fmode_flags(__entry->fmode),
>> +                       show_fs_fcntl_open_flags(__entry->flags),
>> +                       show_fs_fmode_flags(__entry->fmode),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->dir,
>>                        __get_str(name)
>> @@ -535,7 +447,7 @@ TRACE_EVENT(nfs_create_enter,
>>                TP_printk(
>>                        "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>>                        __entry->flags,
>> -                       show_open_flags(__entry->flags),
>> +                       show_fs_fcntl_open_flags(__entry->flags),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->dir,
>>                        __get_str(name)
>> @@ -572,7 +484,7 @@ TRACE_EVENT(nfs_create_exit,
>>                        "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>>                        -__entry->error, nfs_show_status(__entry->error),
>>                        __entry->flags,
>> -                       show_open_flags(__entry->flags),
>> +                       show_fs_fcntl_open_flags(__entry->flags),
>>                        MAJOR(__entry->dev), MINOR(__entry->dev),
>>                        (unsigned long long)__entry->dir,
>>                        __get_str(name)
>> diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
>> new file mode 100644
>> index 000000000000..84e20c43d0c3
>> --- /dev/null
>> +++ b/include/trace/events/fs.h
>> @@ -0,0 +1,146 @@
>> +/* SPDX-License-Identifier: GPL-2.0 */
>> +/*
>> + * Display helpers for generic filesystem items
>> + *
>> + * Author: Chuck Lever <chuck.lever@oracle.com>
>> + *
>> + * Copyright (c) 2020, Oracle and/or its affiliates.
>> + */
>> +
>> +#include <linux/fs.h>
>> +
>> +#define show_fs_dirent_type(x) \
>> +       __print_symbolic(x, \
>> +               { DT_UNKNOWN,           "UNKNOWN" }, \
>> +               { DT_FIFO,              "FIFO" }, \
>> +               { DT_CHR,               "CHR" }, \
>> +               { DT_DIR,               "DIR" }, \
>> +               { DT_BLK,               "BLK" }, \
>> +               { DT_REG,               "REG" }, \
>> +               { DT_LNK,               "LNK" }, \
>> +               { DT_SOCK,              "SOCK" }, \
>> +               { DT_WHT,               "WHT" })
>> +
>> +#define show_fs_fcntl_open_flags(x) \
>> +       __print_flags(x, "|", \
>> +               { O_WRONLY,             "O_WRONLY" }, \
>> +               { O_RDWR,               "O_RDWR" }, \
>> +               { O_CREAT,              "O_CREAT" }, \
>> +               { O_EXCL,               "O_EXCL" }, \
>> +               { O_NOCTTY,             "O_NOCTTY" }, \
>> +               { O_TRUNC,              "O_TRUNC" }, \
>> +               { O_APPEND,             "O_APPEND" }, \
>> +               { O_NONBLOCK,           "O_NONBLOCK" }, \
>> +               { O_DSYNC,              "O_DSYNC" }, \
>> +               { O_DIRECT,             "O_DIRECT" }, \
>> +               { O_LARGEFILE,          "O_LARGEFILE" }, \
>> +               { O_DIRECTORY,          "O_DIRECTORY" }, \
>> +               { O_NOFOLLOW,           "O_NOFOLLOW" }, \
>> +               { O_NOATIME,            "O_NOATIME" }, \
>> +               { O_CLOEXEC,            "O_CLOEXEC" })
>> +
>> +#define __fmode_flag(x)        { (__force unsigned long)FMODE_##x, #x }
>> +#define show_fs_fmode_flags(x) \
>> +       __print_flags(x, "|", \
>> +               __fmode_flag(READ), \
>> +               __fmode_flag(WRITE), \
>> +               __fmode_flag(LSEEK), \
>> +               __fmode_flag(PREAD), \
>> +               __fmode_flag(PWRITE), \
>> +               __fmode_flag(EXEC), \
>> +               __fmode_flag(NDELAY), \
>> +               __fmode_flag(EXCL), \
>> +               __fmode_flag(WRITE_IOCTL), \
>> +               __fmode_flag(32BITHASH), \
>> +               __fmode_flag(64BITHASH), \
>> +               __fmode_flag(NOCMTIME), \
>> +               __fmode_flag(RANDOM), \
>> +               __fmode_flag(UNSIGNED_OFFSET), \
>> +               __fmode_flag(PATH), \
>> +               __fmode_flag(ATOMIC_POS), \
>> +               __fmode_flag(WRITER), \
>> +               __fmode_flag(CAN_READ), \
>> +               __fmode_flag(CAN_WRITE), \
>> +               __fmode_flag(OPENED), \
>> +               __fmode_flag(CREATED), \
>> +               __fmode_flag(STREAM), \
>> +               __fmode_flag(NONOTIFY), \
>> +               __fmode_flag(NOWAIT), \
>> +               __fmode_flag(NEED_UNMOUNT), \
>> +               __fmode_flag(NOACCOUNT), \
>> +               __fmode_flag(BUF_RASYNC))
>> +
>> +#ifdef CONFIG_64BIT
>> +#define show_fs_fcntl_cmd(x) \
>> +       __print_symbolic(x, \
>> +               { F_DUPFD,              "DUPFD" }, \
>> +               { F_GETFD,              "GETFD" }, \
>> +               { F_SETFD,              "SETFD" }, \
>> +               { F_GETFL,              "GETFL" }, \
>> +               { F_SETFL,              "SETFL" }, \
>> +               { F_GETLK,              "GETLK" }, \
>> +               { F_SETLK,              "SETLK" }, \
>> +               { F_SETLKW,             "SETLKW" }, \
>> +               { F_SETOWN,             "SETOWN" }, \
>> +               { F_GETOWN,             "GETOWN" }, \
>> +               { F_SETSIG,             "SETSIG" }, \
>> +               { F_GETSIG,             "GETSIG" }, \
>> +               { F_SETOWN_EX,          "SETOWN_EX" }, \
>> +               { F_GETOWN_EX,          "GETOWN_EX" }, \
>> +               { F_GETOWNER_UIDS,      "GETOWNER_UIDS" }, \
>> +               { F_OFD_GETLK,          "OFD_GETLK" }, \
>> +               { F_OFD_SETLK,          "OFD_SETLK" }, \
>> +               { F_OFD_SETLKW,         "OFD_SETLKW" })
>> +#else /* CONFIG_64BIT */
>> +#define show_fs_fcntl_cmd(x) \
>> +       __print_symbolic(x, \
>> +               { F_DUPFD,              "DUPFD" }, \
>> +               { F_GETFD,              "GETFD" }, \
>> +               { F_SETFD,              "SETFD" }, \
>> +               { F_GETFL,              "GETFL" }, \
>> +               { F_SETFL,              "SETFL" }, \
>> +               { F_GETLK,              "GETLK" }, \
>> +               { F_SETLK,              "SETLK" }, \
>> +               { F_SETLKW,             "SETLKW" }, \
>> +               { F_SETOWN,             "SETOWN" }, \
>> +               { F_GETOWN,             "GETOWN" }, \
>> +               { F_SETSIG,             "SETSIG" }, \
>> +               { F_GETSIG,             "GETSIG" }, \
>> +               { F_GETLK64,            "GETLK64" }, \
>> +               { F_SETLK64,            "SETLK64" }, \
>> +               { F_SETLKW64,           "SETLKW64" }, \
>> +               { F_SETOWN_EX,          "SETOWN_EX" }, \
>> +               { F_GETOWN_EX,          "GETOWN_EX" }, \
>> +               { F_GETOWNER_UIDS,      "GETOWNER_UIDS" }, \
>> +               { F_OFD_GETLK,          "OFD_GETLK" }, \
>> +               { F_OFD_SETLK,          "OFD_SETLK" }, \
>> +               { F_OFD_SETLKW,         "OFD_SETLKW" })
>> +#endif /* CONFIG_64BIT */
>> +
>> +#define show_fs_fcntl_lock_type(x) \
>> +       __print_symbolic(x, \
>> +               { F_RDLCK,              "RDLCK" }, \
>> +               { F_WRLCK,              "WRLCK" }, \
>> +               { F_UNLCK,              "UNLCK" })
>> +
>> +#define show_fs_lookup_flags(flags) \
>> +       __print_flags(flags, "|", \
>> +               { LOOKUP_FOLLOW,        "FOLLOW" }, \
>> +               { LOOKUP_DIRECTORY,     "DIRECTORY" }, \
>> +               { LOOKUP_AUTOMOUNT,     "AUTOMOUNT" }, \
>> +               { LOOKUP_EMPTY,         "EMPTY" }, \
>> +               { LOOKUP_DOWN,          "DOWN" }, \
>> +               { LOOKUP_MOUNTPOINT,    "MOUNTPOINT" }, \
>> +               { LOOKUP_REVAL,         "REVAL" }, \
>> +               { LOOKUP_RCU,           "RCU" }, \
>> +               { LOOKUP_OPEN,          "OPEN" }, \
>> +               { LOOKUP_CREATE,        "CREATE" }, \
>> +               { LOOKUP_EXCL,          "EXCL" }, \
>> +               { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
>> +               { LOOKUP_PARENT,        "PARENT" }, \
>> +               { LOOKUP_NO_SYMLINKS,   "NO_SYMLINKS" }, \
>> +               { LOOKUP_NO_MAGICLINKS, "NO_MAGICLINKS" }, \
>> +               { LOOKUP_NO_XDEV,       "NO_XDEV" }, \
>> +               { LOOKUP_BENEATH,       "BENEATH" }, \
>> +               { LOOKUP_IN_ROOT,       "IN_ROOT" }, \
>> +               { LOOKUP_CACHED,        "CACHED" })
>> 

--
Chuck Lever




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v1 1/2] NFS: Move generic FS show macros to global header
  2021-10-19 16:46 Chuck Lever
@ 2021-10-22 19:14 ` Olga Kornievskaia
  2021-10-22 19:16   ` Chuck Lever III
  0 siblings, 1 reply; 5+ messages in thread
From: Olga Kornievskaia @ 2021-10-22 19:14 UTC (permalink / raw)
  To: Chuck Lever; +Cc: Olga Kornievskaia, linux-nfs

On Tue, Oct 19, 2021 at 12:46 PM Chuck Lever <chuck.lever@oracle.com> wrote:
>
> Refactor: Surface useful show_ macros for use by other trace
> subsystems.

This doesn't apply on top of Trond's origin/testing. Are there some
other dependencies I'm missing?

>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
>  fs/nfs/nfs4trace.h        |   67 ++++++---------------
>  fs/nfs/nfstrace.h         |  118 +++++-------------------------------
>  include/trace/events/fs.h |  146 +++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 180 insertions(+), 151 deletions(-)
>  create mode 100644 include/trace/events/fs.h
>
> diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
> index 7a2567aa2b86..b2f45c825f37 100644
> --- a/fs/nfs/nfs4trace.h
> +++ b/fs/nfs/nfs4trace.h
> @@ -10,6 +10,8 @@
>
>  #include <linux/tracepoint.h>
>
> +#include <trace/events/fs.h>
> +
>  TRACE_DEFINE_ENUM(EPERM);
>  TRACE_DEFINE_ENUM(ENOENT);
>  TRACE_DEFINE_ENUM(EIO);
> @@ -313,19 +315,6 @@ TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS);
>                 { NFS4ERR_RESET_TO_MDS, "RESET_TO_MDS" }, \
>                 { NFS4ERR_RESET_TO_PNFS, "RESET_TO_PNFS" })
>
> -#define show_open_flags(flags) \
> -       __print_flags(flags, "|", \
> -               { O_CREAT, "O_CREAT" }, \
> -               { O_EXCL, "O_EXCL" }, \
> -               { O_TRUNC, "O_TRUNC" }, \
> -               { O_DIRECT, "O_DIRECT" })
> -
> -#define show_fmode_flags(mode) \
> -       __print_flags(mode, "|", \
> -               { ((__force unsigned long)FMODE_READ), "READ" }, \
> -               { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
> -               { ((__force unsigned long)FMODE_EXEC), "EXEC" })
> -
>  #define show_nfs_fattr_flags(valid) \
>         __print_flags((unsigned long)valid, "|", \
>                 { NFS_ATTR_FATTR_TYPE, "TYPE" }, \
> @@ -793,8 +782,8 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
>
>                 TP_STRUCT__entry(
>                         __field(unsigned long, error)
> -                       __field(unsigned int, flags)
> -                       __field(unsigned int, fmode)
> +                       __field(unsigned long, flags)
> +                       __field(unsigned long, fmode)
>                         __field(dev_t, dev)
>                         __field(u32, fhandle)
>                         __field(u64, fileid)
> @@ -812,7 +801,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
>
>                         __entry->error = -error;
>                         __entry->flags = flags;
> -                       __entry->fmode = (__force unsigned int)ctx->mode;
> +                       __entry->fmode = (__force unsigned long)ctx->mode;
>                         __entry->dev = ctx->dentry->d_sb->s_dev;
>                         if (!IS_ERR_OR_NULL(state)) {
>                                 inode = state->inode;
> @@ -842,15 +831,15 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
>                 ),
>
>                 TP_printk(
> -                       "error=%ld (%s) flags=%d (%s) fmode=%s "
> +                       "error=%ld (%s) flags=%lu (%s) fmode=%s "
>                         "fileid=%02x:%02x:%llu fhandle=0x%08x "
>                         "name=%02x:%02x:%llu/%s stateid=%d:0x%08x "
>                         "openstateid=%d:0x%08x",
>                          -__entry->error,
>                          show_nfsv4_errors(__entry->error),
>                          __entry->flags,
> -                        show_open_flags(__entry->flags),
> -                        show_fmode_flags(__entry->fmode),
> +                        show_fs_fcntl_open_flags(__entry->flags),
> +                        show_fs_fmode_flags(__entry->fmode),
>                          MAJOR(__entry->dev), MINOR(__entry->dev),
>                          (unsigned long long)__entry->fileid,
>                          __entry->fhandle,
> @@ -904,7 +893,7 @@ TRACE_EVENT(nfs4_cached_open,
>                 TP_printk(
>                         "fmode=%s fileid=%02x:%02x:%llu "
>                         "fhandle=0x%08x stateid=%d:0x%08x",
> -                       __entry->fmode ?  show_fmode_flags(__entry->fmode) :
> +                       __entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
>                                           "closed",
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->fileid,
> @@ -952,7 +941,7 @@ TRACE_EVENT(nfs4_close,
>                         "fhandle=0x%08x openstateid=%d:0x%08x",
>                         -__entry->error,
>                         show_nfsv4_errors(__entry->error),
> -                       __entry->fmode ?  show_fmode_flags(__entry->fmode) :
> +                       __entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
>                                           "closed",
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->fileid,
> @@ -961,24 +950,6 @@ TRACE_EVENT(nfs4_close,
>                 )
>  );
>
> -TRACE_DEFINE_ENUM(F_GETLK);
> -TRACE_DEFINE_ENUM(F_SETLK);
> -TRACE_DEFINE_ENUM(F_SETLKW);
> -TRACE_DEFINE_ENUM(F_RDLCK);
> -TRACE_DEFINE_ENUM(F_WRLCK);
> -TRACE_DEFINE_ENUM(F_UNLCK);
> -
> -#define show_lock_cmd(type) \
> -       __print_symbolic((int)type, \
> -               { F_GETLK, "GETLK" }, \
> -               { F_SETLK, "SETLK" }, \
> -               { F_SETLKW, "SETLKW" })
> -#define show_lock_type(type) \
> -       __print_symbolic((int)type, \
> -               { F_RDLCK, "RDLCK" }, \
> -               { F_WRLCK, "WRLCK" }, \
> -               { F_UNLCK, "UNLCK" })
> -
>  DECLARE_EVENT_CLASS(nfs4_lock_event,
>                 TP_PROTO(
>                         const struct file_lock *request,
> @@ -991,8 +962,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
>
>                 TP_STRUCT__entry(
>                         __field(unsigned long, error)
> -                       __field(int, cmd)
> -                       __field(char, type)
> +                       __field(unsigned long, cmd)
> +                       __field(unsigned long, type)
>                         __field(loff_t, start)
>                         __field(loff_t, end)
>                         __field(dev_t, dev)
> @@ -1025,8 +996,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
>                         "stateid=%d:0x%08x",
>                         -__entry->error,
>                         show_nfsv4_errors(__entry->error),
> -                       show_lock_cmd(__entry->cmd),
> -                       show_lock_type(__entry->type),
> +                       show_fs_fcntl_cmd(__entry->cmd),
> +                       show_fs_fcntl_lock_type(__entry->type),
>                         (long long)__entry->start,
>                         (long long)__entry->end,
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
> @@ -1061,8 +1032,8 @@ TRACE_EVENT(nfs4_set_lock,
>
>                 TP_STRUCT__entry(
>                         __field(unsigned long, error)
> -                       __field(int, cmd)
> -                       __field(char, type)
> +                       __field(unsigned long, cmd)
> +                       __field(unsigned long, type)
>                         __field(loff_t, start)
>                         __field(loff_t, end)
>                         __field(dev_t, dev)
> @@ -1101,8 +1072,8 @@ TRACE_EVENT(nfs4_set_lock,
>                         "stateid=%d:0x%08x lockstateid=%d:0x%08x",
>                         -__entry->error,
>                         show_nfsv4_errors(__entry->error),
> -                       show_lock_cmd(__entry->cmd),
> -                       show_lock_type(__entry->type),
> +                       show_fs_fcntl_cmd(__entry->cmd),
> +                       show_fs_fcntl_lock_type(__entry->type),
>                         (long long)__entry->start,
>                         (long long)__entry->end,
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
> @@ -1219,7 +1190,7 @@ DECLARE_EVENT_CLASS(nfs4_set_delegation_event,
>
>                 TP_printk(
>                         "fmode=%s fileid=%02x:%02x:%llu fhandle=0x%08x",
> -                       show_fmode_flags(__entry->fmode),
> +                       show_fs_fmode_flags(__entry->fmode),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->fileid,
>                         __entry->fhandle
> diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h
> index 8a224871be74..49d432c00bde 100644
> --- a/fs/nfs/nfstrace.h
> +++ b/fs/nfs/nfstrace.h
> @@ -11,27 +11,7 @@
>  #include <linux/tracepoint.h>
>  #include <linux/iversion.h>
>
> -TRACE_DEFINE_ENUM(DT_UNKNOWN);
> -TRACE_DEFINE_ENUM(DT_FIFO);
> -TRACE_DEFINE_ENUM(DT_CHR);
> -TRACE_DEFINE_ENUM(DT_DIR);
> -TRACE_DEFINE_ENUM(DT_BLK);
> -TRACE_DEFINE_ENUM(DT_REG);
> -TRACE_DEFINE_ENUM(DT_LNK);
> -TRACE_DEFINE_ENUM(DT_SOCK);
> -TRACE_DEFINE_ENUM(DT_WHT);
> -
> -#define nfs_show_file_type(ftype) \
> -       __print_symbolic(ftype, \
> -                       { DT_UNKNOWN, "UNKNOWN" }, \
> -                       { DT_FIFO, "FIFO" }, \
> -                       { DT_CHR, "CHR" }, \
> -                       { DT_DIR, "DIR" }, \
> -                       { DT_BLK, "BLK" }, \
> -                       { DT_REG, "REG" }, \
> -                       { DT_LNK, "LNK" }, \
> -                       { DT_SOCK, "SOCK" }, \
> -                       { DT_WHT, "WHT" })
> +#include <trace/events/fs.h>
>
>  TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA);
>  TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME);
> @@ -168,7 +148,7 @@ DECLARE_EVENT_CLASS(nfs_inode_event_done,
>                         (unsigned long long)__entry->fileid,
>                         __entry->fhandle,
>                         __entry->type,
> -                       nfs_show_file_type(__entry->type),
> +                       show_fs_dirent_type(__entry->type),
>                         (unsigned long long)__entry->version,
>                         (long long)__entry->size,
>                         __entry->cache_validity,
> @@ -259,7 +239,7 @@ TRACE_EVENT(nfs_access_exit,
>                         (unsigned long long)__entry->fileid,
>                         __entry->fhandle,
>                         __entry->type,
> -                       nfs_show_file_type(__entry->type),
> +                       show_fs_dirent_type(__entry->type),
>                         (unsigned long long)__entry->version,
>                         (long long)__entry->size,
>                         __entry->cache_validity,
> @@ -270,34 +250,6 @@ TRACE_EVENT(nfs_access_exit,
>                 )
>  );
>
> -TRACE_DEFINE_ENUM(LOOKUP_FOLLOW);
> -TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY);
> -TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT);
> -TRACE_DEFINE_ENUM(LOOKUP_PARENT);
> -TRACE_DEFINE_ENUM(LOOKUP_REVAL);
> -TRACE_DEFINE_ENUM(LOOKUP_RCU);
> -TRACE_DEFINE_ENUM(LOOKUP_OPEN);
> -TRACE_DEFINE_ENUM(LOOKUP_CREATE);
> -TRACE_DEFINE_ENUM(LOOKUP_EXCL);
> -TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET);
> -TRACE_DEFINE_ENUM(LOOKUP_EMPTY);
> -TRACE_DEFINE_ENUM(LOOKUP_DOWN);
> -
> -#define show_lookup_flags(flags) \
> -       __print_flags(flags, "|", \
> -                       { LOOKUP_FOLLOW, "FOLLOW" }, \
> -                       { LOOKUP_DIRECTORY, "DIRECTORY" }, \
> -                       { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
> -                       { LOOKUP_PARENT, "PARENT" }, \
> -                       { LOOKUP_REVAL, "REVAL" }, \
> -                       { LOOKUP_RCU, "RCU" }, \
> -                       { LOOKUP_OPEN, "OPEN" }, \
> -                       { LOOKUP_CREATE, "CREATE" }, \
> -                       { LOOKUP_EXCL, "EXCL" }, \
> -                       { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
> -                       { LOOKUP_EMPTY, "EMPTY" }, \
> -                       { LOOKUP_DOWN, "DOWN" })
> -
>  DECLARE_EVENT_CLASS(nfs_lookup_event,
>                 TP_PROTO(
>                         const struct inode *dir,
> @@ -324,7 +276,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event,
>                 TP_printk(
>                         "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>                         __entry->flags,
> -                       show_lookup_flags(__entry->flags),
> +                       show_fs_lookup_flags(__entry->flags),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->dir,
>                         __get_str(name)
> @@ -370,7 +322,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event_done,
>                         "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>                         -__entry->error, nfs_show_status(__entry->error),
>                         __entry->flags,
> -                       show_lookup_flags(__entry->flags),
> +                       show_fs_lookup_flags(__entry->flags),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->dir,
>                         __get_str(name)
> @@ -392,46 +344,6 @@ DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
>  DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
>  DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
>
> -TRACE_DEFINE_ENUM(O_WRONLY);
> -TRACE_DEFINE_ENUM(O_RDWR);
> -TRACE_DEFINE_ENUM(O_CREAT);
> -TRACE_DEFINE_ENUM(O_EXCL);
> -TRACE_DEFINE_ENUM(O_NOCTTY);
> -TRACE_DEFINE_ENUM(O_TRUNC);
> -TRACE_DEFINE_ENUM(O_APPEND);
> -TRACE_DEFINE_ENUM(O_NONBLOCK);
> -TRACE_DEFINE_ENUM(O_DSYNC);
> -TRACE_DEFINE_ENUM(O_DIRECT);
> -TRACE_DEFINE_ENUM(O_LARGEFILE);
> -TRACE_DEFINE_ENUM(O_DIRECTORY);
> -TRACE_DEFINE_ENUM(O_NOFOLLOW);
> -TRACE_DEFINE_ENUM(O_NOATIME);
> -TRACE_DEFINE_ENUM(O_CLOEXEC);
> -
> -#define show_open_flags(flags) \
> -       __print_flags(flags, "|", \
> -               { O_WRONLY, "O_WRONLY" }, \
> -               { O_RDWR, "O_RDWR" }, \
> -               { O_CREAT, "O_CREAT" }, \
> -               { O_EXCL, "O_EXCL" }, \
> -               { O_NOCTTY, "O_NOCTTY" }, \
> -               { O_TRUNC, "O_TRUNC" }, \
> -               { O_APPEND, "O_APPEND" }, \
> -               { O_NONBLOCK, "O_NONBLOCK" }, \
> -               { O_DSYNC, "O_DSYNC" }, \
> -               { O_DIRECT, "O_DIRECT" }, \
> -               { O_LARGEFILE, "O_LARGEFILE" }, \
> -               { O_DIRECTORY, "O_DIRECTORY" }, \
> -               { O_NOFOLLOW, "O_NOFOLLOW" }, \
> -               { O_NOATIME, "O_NOATIME" }, \
> -               { O_CLOEXEC, "O_CLOEXEC" })
> -
> -#define show_fmode_flags(mode) \
> -       __print_flags(mode, "|", \
> -               { ((__force unsigned long)FMODE_READ), "READ" }, \
> -               { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
> -               { ((__force unsigned long)FMODE_EXEC), "EXEC" })
> -
>  TRACE_EVENT(nfs_atomic_open_enter,
>                 TP_PROTO(
>                         const struct inode *dir,
> @@ -443,7 +355,7 @@ TRACE_EVENT(nfs_atomic_open_enter,
>
>                 TP_STRUCT__entry(
>                         __field(unsigned long, flags)
> -                       __field(unsigned int, fmode)
> +                       __field(unsigned long, fmode)
>                         __field(dev_t, dev)
>                         __field(u64, dir)
>                         __string(name, ctx->dentry->d_name.name)
> @@ -453,15 +365,15 @@ TRACE_EVENT(nfs_atomic_open_enter,
>                         __entry->dev = dir->i_sb->s_dev;
>                         __entry->dir = NFS_FILEID(dir);
>                         __entry->flags = flags;
> -                       __entry->fmode = (__force unsigned int)ctx->mode;
> +                       __entry->fmode = (__force unsigned long)ctx->mode;
>                         __assign_str(name, ctx->dentry->d_name.name);
>                 ),
>
>                 TP_printk(
>                         "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
>                         __entry->flags,
> -                       show_open_flags(__entry->flags),
> -                       show_fmode_flags(__entry->fmode),
> +                       show_fs_fcntl_open_flags(__entry->flags),
> +                       show_fs_fmode_flags(__entry->fmode),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->dir,
>                         __get_str(name)
> @@ -481,7 +393,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
>                 TP_STRUCT__entry(
>                         __field(unsigned long, error)
>                         __field(unsigned long, flags)
> -                       __field(unsigned int, fmode)
> +                       __field(unsigned long, fmode)
>                         __field(dev_t, dev)
>                         __field(u64, dir)
>                         __string(name, ctx->dentry->d_name.name)
> @@ -492,7 +404,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
>                         __entry->dev = dir->i_sb->s_dev;
>                         __entry->dir = NFS_FILEID(dir);
>                         __entry->flags = flags;
> -                       __entry->fmode = (__force unsigned int)ctx->mode;
> +                       __entry->fmode = (__force unsigned long)ctx->mode;
>                         __assign_str(name, ctx->dentry->d_name.name);
>                 ),
>
> @@ -501,8 +413,8 @@ TRACE_EVENT(nfs_atomic_open_exit,
>                         "name=%02x:%02x:%llu/%s",
>                         -__entry->error, nfs_show_status(__entry->error),
>                         __entry->flags,
> -                       show_open_flags(__entry->flags),
> -                       show_fmode_flags(__entry->fmode),
> +                       show_fs_fcntl_open_flags(__entry->flags),
> +                       show_fs_fmode_flags(__entry->fmode),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->dir,
>                         __get_str(name)
> @@ -535,7 +447,7 @@ TRACE_EVENT(nfs_create_enter,
>                 TP_printk(
>                         "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>                         __entry->flags,
> -                       show_open_flags(__entry->flags),
> +                       show_fs_fcntl_open_flags(__entry->flags),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->dir,
>                         __get_str(name)
> @@ -572,7 +484,7 @@ TRACE_EVENT(nfs_create_exit,
>                         "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
>                         -__entry->error, nfs_show_status(__entry->error),
>                         __entry->flags,
> -                       show_open_flags(__entry->flags),
> +                       show_fs_fcntl_open_flags(__entry->flags),
>                         MAJOR(__entry->dev), MINOR(__entry->dev),
>                         (unsigned long long)__entry->dir,
>                         __get_str(name)
> diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
> new file mode 100644
> index 000000000000..84e20c43d0c3
> --- /dev/null
> +++ b/include/trace/events/fs.h
> @@ -0,0 +1,146 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Display helpers for generic filesystem items
> + *
> + * Author: Chuck Lever <chuck.lever@oracle.com>
> + *
> + * Copyright (c) 2020, Oracle and/or its affiliates.
> + */
> +
> +#include <linux/fs.h>
> +
> +#define show_fs_dirent_type(x) \
> +       __print_symbolic(x, \
> +               { DT_UNKNOWN,           "UNKNOWN" }, \
> +               { DT_FIFO,              "FIFO" }, \
> +               { DT_CHR,               "CHR" }, \
> +               { DT_DIR,               "DIR" }, \
> +               { DT_BLK,               "BLK" }, \
> +               { DT_REG,               "REG" }, \
> +               { DT_LNK,               "LNK" }, \
> +               { DT_SOCK,              "SOCK" }, \
> +               { DT_WHT,               "WHT" })
> +
> +#define show_fs_fcntl_open_flags(x) \
> +       __print_flags(x, "|", \
> +               { O_WRONLY,             "O_WRONLY" }, \
> +               { O_RDWR,               "O_RDWR" }, \
> +               { O_CREAT,              "O_CREAT" }, \
> +               { O_EXCL,               "O_EXCL" }, \
> +               { O_NOCTTY,             "O_NOCTTY" }, \
> +               { O_TRUNC,              "O_TRUNC" }, \
> +               { O_APPEND,             "O_APPEND" }, \
> +               { O_NONBLOCK,           "O_NONBLOCK" }, \
> +               { O_DSYNC,              "O_DSYNC" }, \
> +               { O_DIRECT,             "O_DIRECT" }, \
> +               { O_LARGEFILE,          "O_LARGEFILE" }, \
> +               { O_DIRECTORY,          "O_DIRECTORY" }, \
> +               { O_NOFOLLOW,           "O_NOFOLLOW" }, \
> +               { O_NOATIME,            "O_NOATIME" }, \
> +               { O_CLOEXEC,            "O_CLOEXEC" })
> +
> +#define __fmode_flag(x)        { (__force unsigned long)FMODE_##x, #x }
> +#define show_fs_fmode_flags(x) \
> +       __print_flags(x, "|", \
> +               __fmode_flag(READ), \
> +               __fmode_flag(WRITE), \
> +               __fmode_flag(LSEEK), \
> +               __fmode_flag(PREAD), \
> +               __fmode_flag(PWRITE), \
> +               __fmode_flag(EXEC), \
> +               __fmode_flag(NDELAY), \
> +               __fmode_flag(EXCL), \
> +               __fmode_flag(WRITE_IOCTL), \
> +               __fmode_flag(32BITHASH), \
> +               __fmode_flag(64BITHASH), \
> +               __fmode_flag(NOCMTIME), \
> +               __fmode_flag(RANDOM), \
> +               __fmode_flag(UNSIGNED_OFFSET), \
> +               __fmode_flag(PATH), \
> +               __fmode_flag(ATOMIC_POS), \
> +               __fmode_flag(WRITER), \
> +               __fmode_flag(CAN_READ), \
> +               __fmode_flag(CAN_WRITE), \
> +               __fmode_flag(OPENED), \
> +               __fmode_flag(CREATED), \
> +               __fmode_flag(STREAM), \
> +               __fmode_flag(NONOTIFY), \
> +               __fmode_flag(NOWAIT), \
> +               __fmode_flag(NEED_UNMOUNT), \
> +               __fmode_flag(NOACCOUNT), \
> +               __fmode_flag(BUF_RASYNC))
> +
> +#ifdef CONFIG_64BIT
> +#define show_fs_fcntl_cmd(x) \
> +       __print_symbolic(x, \
> +               { F_DUPFD,              "DUPFD" }, \
> +               { F_GETFD,              "GETFD" }, \
> +               { F_SETFD,              "SETFD" }, \
> +               { F_GETFL,              "GETFL" }, \
> +               { F_SETFL,              "SETFL" }, \
> +               { F_GETLK,              "GETLK" }, \
> +               { F_SETLK,              "SETLK" }, \
> +               { F_SETLKW,             "SETLKW" }, \
> +               { F_SETOWN,             "SETOWN" }, \
> +               { F_GETOWN,             "GETOWN" }, \
> +               { F_SETSIG,             "SETSIG" }, \
> +               { F_GETSIG,             "GETSIG" }, \
> +               { F_SETOWN_EX,          "SETOWN_EX" }, \
> +               { F_GETOWN_EX,          "GETOWN_EX" }, \
> +               { F_GETOWNER_UIDS,      "GETOWNER_UIDS" }, \
> +               { F_OFD_GETLK,          "OFD_GETLK" }, \
> +               { F_OFD_SETLK,          "OFD_SETLK" }, \
> +               { F_OFD_SETLKW,         "OFD_SETLKW" })
> +#else /* CONFIG_64BIT */
> +#define show_fs_fcntl_cmd(x) \
> +       __print_symbolic(x, \
> +               { F_DUPFD,              "DUPFD" }, \
> +               { F_GETFD,              "GETFD" }, \
> +               { F_SETFD,              "SETFD" }, \
> +               { F_GETFL,              "GETFL" }, \
> +               { F_SETFL,              "SETFL" }, \
> +               { F_GETLK,              "GETLK" }, \
> +               { F_SETLK,              "SETLK" }, \
> +               { F_SETLKW,             "SETLKW" }, \
> +               { F_SETOWN,             "SETOWN" }, \
> +               { F_GETOWN,             "GETOWN" }, \
> +               { F_SETSIG,             "SETSIG" }, \
> +               { F_GETSIG,             "GETSIG" }, \
> +               { F_GETLK64,            "GETLK64" }, \
> +               { F_SETLK64,            "SETLK64" }, \
> +               { F_SETLKW64,           "SETLKW64" }, \
> +               { F_SETOWN_EX,          "SETOWN_EX" }, \
> +               { F_GETOWN_EX,          "GETOWN_EX" }, \
> +               { F_GETOWNER_UIDS,      "GETOWNER_UIDS" }, \
> +               { F_OFD_GETLK,          "OFD_GETLK" }, \
> +               { F_OFD_SETLK,          "OFD_SETLK" }, \
> +               { F_OFD_SETLKW,         "OFD_SETLKW" })
> +#endif /* CONFIG_64BIT */
> +
> +#define show_fs_fcntl_lock_type(x) \
> +       __print_symbolic(x, \
> +               { F_RDLCK,              "RDLCK" }, \
> +               { F_WRLCK,              "WRLCK" }, \
> +               { F_UNLCK,              "UNLCK" })
> +
> +#define show_fs_lookup_flags(flags) \
> +       __print_flags(flags, "|", \
> +               { LOOKUP_FOLLOW,        "FOLLOW" }, \
> +               { LOOKUP_DIRECTORY,     "DIRECTORY" }, \
> +               { LOOKUP_AUTOMOUNT,     "AUTOMOUNT" }, \
> +               { LOOKUP_EMPTY,         "EMPTY" }, \
> +               { LOOKUP_DOWN,          "DOWN" }, \
> +               { LOOKUP_MOUNTPOINT,    "MOUNTPOINT" }, \
> +               { LOOKUP_REVAL,         "REVAL" }, \
> +               { LOOKUP_RCU,           "RCU" }, \
> +               { LOOKUP_OPEN,          "OPEN" }, \
> +               { LOOKUP_CREATE,        "CREATE" }, \
> +               { LOOKUP_EXCL,          "EXCL" }, \
> +               { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
> +               { LOOKUP_PARENT,        "PARENT" }, \
> +               { LOOKUP_NO_SYMLINKS,   "NO_SYMLINKS" }, \
> +               { LOOKUP_NO_MAGICLINKS, "NO_MAGICLINKS" }, \
> +               { LOOKUP_NO_XDEV,       "NO_XDEV" }, \
> +               { LOOKUP_BENEATH,       "BENEATH" }, \
> +               { LOOKUP_IN_ROOT,       "IN_ROOT" }, \
> +               { LOOKUP_CACHED,        "CACHED" })
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v1 1/2] NFS: Move generic FS show macros to global header
@ 2021-10-19 16:46 Chuck Lever
  2021-10-22 19:14 ` Olga Kornievskaia
  0 siblings, 1 reply; 5+ messages in thread
From: Chuck Lever @ 2021-10-19 16:46 UTC (permalink / raw)
  To: kolga; +Cc: linux-nfs

Refactor: Surface useful show_ macros for use by other trace
subsystems.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 fs/nfs/nfs4trace.h        |   67 ++++++---------------
 fs/nfs/nfstrace.h         |  118 +++++-------------------------------
 include/trace/events/fs.h |  146 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 180 insertions(+), 151 deletions(-)
 create mode 100644 include/trace/events/fs.h

diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
index 7a2567aa2b86..b2f45c825f37 100644
--- a/fs/nfs/nfs4trace.h
+++ b/fs/nfs/nfs4trace.h
@@ -10,6 +10,8 @@
 
 #include <linux/tracepoint.h>
 
+#include <trace/events/fs.h>
+
 TRACE_DEFINE_ENUM(EPERM);
 TRACE_DEFINE_ENUM(ENOENT);
 TRACE_DEFINE_ENUM(EIO);
@@ -313,19 +315,6 @@ TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS);
 		{ NFS4ERR_RESET_TO_MDS, "RESET_TO_MDS" }, \
 		{ NFS4ERR_RESET_TO_PNFS, "RESET_TO_PNFS" })
 
-#define show_open_flags(flags) \
-	__print_flags(flags, "|", \
-		{ O_CREAT, "O_CREAT" }, \
-		{ O_EXCL, "O_EXCL" }, \
-		{ O_TRUNC, "O_TRUNC" }, \
-		{ O_DIRECT, "O_DIRECT" })
-
-#define show_fmode_flags(mode) \
-	__print_flags(mode, "|", \
-		{ ((__force unsigned long)FMODE_READ), "READ" }, \
-		{ ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
-		{ ((__force unsigned long)FMODE_EXEC), "EXEC" })
-
 #define show_nfs_fattr_flags(valid) \
 	__print_flags((unsigned long)valid, "|", \
 		{ NFS_ATTR_FATTR_TYPE, "TYPE" }, \
@@ -793,8 +782,8 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
 
 		TP_STRUCT__entry(
 			__field(unsigned long, error)
-			__field(unsigned int, flags)
-			__field(unsigned int, fmode)
+			__field(unsigned long, flags)
+			__field(unsigned long, fmode)
 			__field(dev_t, dev)
 			__field(u32, fhandle)
 			__field(u64, fileid)
@@ -812,7 +801,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
 
 			__entry->error = -error;
 			__entry->flags = flags;
-			__entry->fmode = (__force unsigned int)ctx->mode;
+			__entry->fmode = (__force unsigned long)ctx->mode;
 			__entry->dev = ctx->dentry->d_sb->s_dev;
 			if (!IS_ERR_OR_NULL(state)) {
 				inode = state->inode;
@@ -842,15 +831,15 @@ DECLARE_EVENT_CLASS(nfs4_open_event,
 		),
 
 		TP_printk(
-			"error=%ld (%s) flags=%d (%s) fmode=%s "
+			"error=%ld (%s) flags=%lu (%s) fmode=%s "
 			"fileid=%02x:%02x:%llu fhandle=0x%08x "
 			"name=%02x:%02x:%llu/%s stateid=%d:0x%08x "
 			"openstateid=%d:0x%08x",
 			 -__entry->error,
 			 show_nfsv4_errors(__entry->error),
 			 __entry->flags,
-			 show_open_flags(__entry->flags),
-			 show_fmode_flags(__entry->fmode),
+			 show_fs_fcntl_open_flags(__entry->flags),
+			 show_fs_fmode_flags(__entry->fmode),
 			 MAJOR(__entry->dev), MINOR(__entry->dev),
 			 (unsigned long long)__entry->fileid,
 			 __entry->fhandle,
@@ -904,7 +893,7 @@ TRACE_EVENT(nfs4_cached_open,
 		TP_printk(
 			"fmode=%s fileid=%02x:%02x:%llu "
 			"fhandle=0x%08x stateid=%d:0x%08x",
-			__entry->fmode ?  show_fmode_flags(__entry->fmode) :
+			__entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
 					  "closed",
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->fileid,
@@ -952,7 +941,7 @@ TRACE_EVENT(nfs4_close,
 			"fhandle=0x%08x openstateid=%d:0x%08x",
 			-__entry->error,
 			show_nfsv4_errors(__entry->error),
-			__entry->fmode ?  show_fmode_flags(__entry->fmode) :
+			__entry->fmode ?  show_fs_fmode_flags(__entry->fmode) :
 					  "closed",
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->fileid,
@@ -961,24 +950,6 @@ TRACE_EVENT(nfs4_close,
 		)
 );
 
-TRACE_DEFINE_ENUM(F_GETLK);
-TRACE_DEFINE_ENUM(F_SETLK);
-TRACE_DEFINE_ENUM(F_SETLKW);
-TRACE_DEFINE_ENUM(F_RDLCK);
-TRACE_DEFINE_ENUM(F_WRLCK);
-TRACE_DEFINE_ENUM(F_UNLCK);
-
-#define show_lock_cmd(type) \
-	__print_symbolic((int)type, \
-		{ F_GETLK, "GETLK" }, \
-		{ F_SETLK, "SETLK" }, \
-		{ F_SETLKW, "SETLKW" })
-#define show_lock_type(type) \
-	__print_symbolic((int)type, \
-		{ F_RDLCK, "RDLCK" }, \
-		{ F_WRLCK, "WRLCK" }, \
-		{ F_UNLCK, "UNLCK" })
-
 DECLARE_EVENT_CLASS(nfs4_lock_event,
 		TP_PROTO(
 			const struct file_lock *request,
@@ -991,8 +962,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
 
 		TP_STRUCT__entry(
 			__field(unsigned long, error)
-			__field(int, cmd)
-			__field(char, type)
+			__field(unsigned long, cmd)
+			__field(unsigned long, type)
 			__field(loff_t, start)
 			__field(loff_t, end)
 			__field(dev_t, dev)
@@ -1025,8 +996,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event,
 			"stateid=%d:0x%08x",
 			-__entry->error,
 			show_nfsv4_errors(__entry->error),
-			show_lock_cmd(__entry->cmd),
-			show_lock_type(__entry->type),
+			show_fs_fcntl_cmd(__entry->cmd),
+			show_fs_fcntl_lock_type(__entry->type),
 			(long long)__entry->start,
 			(long long)__entry->end,
 			MAJOR(__entry->dev), MINOR(__entry->dev),
@@ -1061,8 +1032,8 @@ TRACE_EVENT(nfs4_set_lock,
 
 		TP_STRUCT__entry(
 			__field(unsigned long, error)
-			__field(int, cmd)
-			__field(char, type)
+			__field(unsigned long, cmd)
+			__field(unsigned long, type)
 			__field(loff_t, start)
 			__field(loff_t, end)
 			__field(dev_t, dev)
@@ -1101,8 +1072,8 @@ TRACE_EVENT(nfs4_set_lock,
 			"stateid=%d:0x%08x lockstateid=%d:0x%08x",
 			-__entry->error,
 			show_nfsv4_errors(__entry->error),
-			show_lock_cmd(__entry->cmd),
-			show_lock_type(__entry->type),
+			show_fs_fcntl_cmd(__entry->cmd),
+			show_fs_fcntl_lock_type(__entry->type),
 			(long long)__entry->start,
 			(long long)__entry->end,
 			MAJOR(__entry->dev), MINOR(__entry->dev),
@@ -1219,7 +1190,7 @@ DECLARE_EVENT_CLASS(nfs4_set_delegation_event,
 
 		TP_printk(
 			"fmode=%s fileid=%02x:%02x:%llu fhandle=0x%08x",
-			show_fmode_flags(__entry->fmode),
+			show_fs_fmode_flags(__entry->fmode),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->fileid,
 			__entry->fhandle
diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h
index 8a224871be74..49d432c00bde 100644
--- a/fs/nfs/nfstrace.h
+++ b/fs/nfs/nfstrace.h
@@ -11,27 +11,7 @@
 #include <linux/tracepoint.h>
 #include <linux/iversion.h>
 
-TRACE_DEFINE_ENUM(DT_UNKNOWN);
-TRACE_DEFINE_ENUM(DT_FIFO);
-TRACE_DEFINE_ENUM(DT_CHR);
-TRACE_DEFINE_ENUM(DT_DIR);
-TRACE_DEFINE_ENUM(DT_BLK);
-TRACE_DEFINE_ENUM(DT_REG);
-TRACE_DEFINE_ENUM(DT_LNK);
-TRACE_DEFINE_ENUM(DT_SOCK);
-TRACE_DEFINE_ENUM(DT_WHT);
-
-#define nfs_show_file_type(ftype) \
-	__print_symbolic(ftype, \
-			{ DT_UNKNOWN, "UNKNOWN" }, \
-			{ DT_FIFO, "FIFO" }, \
-			{ DT_CHR, "CHR" }, \
-			{ DT_DIR, "DIR" }, \
-			{ DT_BLK, "BLK" }, \
-			{ DT_REG, "REG" }, \
-			{ DT_LNK, "LNK" }, \
-			{ DT_SOCK, "SOCK" }, \
-			{ DT_WHT, "WHT" })
+#include <trace/events/fs.h>
 
 TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA);
 TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME);
@@ -168,7 +148,7 @@ DECLARE_EVENT_CLASS(nfs_inode_event_done,
 			(unsigned long long)__entry->fileid,
 			__entry->fhandle,
 			__entry->type,
-			nfs_show_file_type(__entry->type),
+			show_fs_dirent_type(__entry->type),
 			(unsigned long long)__entry->version,
 			(long long)__entry->size,
 			__entry->cache_validity,
@@ -259,7 +239,7 @@ TRACE_EVENT(nfs_access_exit,
 			(unsigned long long)__entry->fileid,
 			__entry->fhandle,
 			__entry->type,
-			nfs_show_file_type(__entry->type),
+			show_fs_dirent_type(__entry->type),
 			(unsigned long long)__entry->version,
 			(long long)__entry->size,
 			__entry->cache_validity,
@@ -270,34 +250,6 @@ TRACE_EVENT(nfs_access_exit,
 		)
 );
 
-TRACE_DEFINE_ENUM(LOOKUP_FOLLOW);
-TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY);
-TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT);
-TRACE_DEFINE_ENUM(LOOKUP_PARENT);
-TRACE_DEFINE_ENUM(LOOKUP_REVAL);
-TRACE_DEFINE_ENUM(LOOKUP_RCU);
-TRACE_DEFINE_ENUM(LOOKUP_OPEN);
-TRACE_DEFINE_ENUM(LOOKUP_CREATE);
-TRACE_DEFINE_ENUM(LOOKUP_EXCL);
-TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET);
-TRACE_DEFINE_ENUM(LOOKUP_EMPTY);
-TRACE_DEFINE_ENUM(LOOKUP_DOWN);
-
-#define show_lookup_flags(flags) \
-	__print_flags(flags, "|", \
-			{ LOOKUP_FOLLOW, "FOLLOW" }, \
-			{ LOOKUP_DIRECTORY, "DIRECTORY" }, \
-			{ LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
-			{ LOOKUP_PARENT, "PARENT" }, \
-			{ LOOKUP_REVAL, "REVAL" }, \
-			{ LOOKUP_RCU, "RCU" }, \
-			{ LOOKUP_OPEN, "OPEN" }, \
-			{ LOOKUP_CREATE, "CREATE" }, \
-			{ LOOKUP_EXCL, "EXCL" }, \
-			{ LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
-			{ LOOKUP_EMPTY, "EMPTY" }, \
-			{ LOOKUP_DOWN, "DOWN" })
-
 DECLARE_EVENT_CLASS(nfs_lookup_event,
 		TP_PROTO(
 			const struct inode *dir,
@@ -324,7 +276,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event,
 		TP_printk(
 			"flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
 			__entry->flags,
-			show_lookup_flags(__entry->flags),
+			show_fs_lookup_flags(__entry->flags),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->dir,
 			__get_str(name)
@@ -370,7 +322,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event_done,
 			"error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
 			-__entry->error, nfs_show_status(__entry->error),
 			__entry->flags,
-			show_lookup_flags(__entry->flags),
+			show_fs_lookup_flags(__entry->flags),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->dir,
 			__get_str(name)
@@ -392,46 +344,6 @@ DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit);
 DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
 DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
 
-TRACE_DEFINE_ENUM(O_WRONLY);
-TRACE_DEFINE_ENUM(O_RDWR);
-TRACE_DEFINE_ENUM(O_CREAT);
-TRACE_DEFINE_ENUM(O_EXCL);
-TRACE_DEFINE_ENUM(O_NOCTTY);
-TRACE_DEFINE_ENUM(O_TRUNC);
-TRACE_DEFINE_ENUM(O_APPEND);
-TRACE_DEFINE_ENUM(O_NONBLOCK);
-TRACE_DEFINE_ENUM(O_DSYNC);
-TRACE_DEFINE_ENUM(O_DIRECT);
-TRACE_DEFINE_ENUM(O_LARGEFILE);
-TRACE_DEFINE_ENUM(O_DIRECTORY);
-TRACE_DEFINE_ENUM(O_NOFOLLOW);
-TRACE_DEFINE_ENUM(O_NOATIME);
-TRACE_DEFINE_ENUM(O_CLOEXEC);
-
-#define show_open_flags(flags) \
-	__print_flags(flags, "|", \
-		{ O_WRONLY, "O_WRONLY" }, \
-		{ O_RDWR, "O_RDWR" }, \
-		{ O_CREAT, "O_CREAT" }, \
-		{ O_EXCL, "O_EXCL" }, \
-		{ O_NOCTTY, "O_NOCTTY" }, \
-		{ O_TRUNC, "O_TRUNC" }, \
-		{ O_APPEND, "O_APPEND" }, \
-		{ O_NONBLOCK, "O_NONBLOCK" }, \
-		{ O_DSYNC, "O_DSYNC" }, \
-		{ O_DIRECT, "O_DIRECT" }, \
-		{ O_LARGEFILE, "O_LARGEFILE" }, \
-		{ O_DIRECTORY, "O_DIRECTORY" }, \
-		{ O_NOFOLLOW, "O_NOFOLLOW" }, \
-		{ O_NOATIME, "O_NOATIME" }, \
-		{ O_CLOEXEC, "O_CLOEXEC" })
-
-#define show_fmode_flags(mode) \
-	__print_flags(mode, "|", \
-		{ ((__force unsigned long)FMODE_READ), "READ" }, \
-		{ ((__force unsigned long)FMODE_WRITE), "WRITE" }, \
-		{ ((__force unsigned long)FMODE_EXEC), "EXEC" })
-
 TRACE_EVENT(nfs_atomic_open_enter,
 		TP_PROTO(
 			const struct inode *dir,
@@ -443,7 +355,7 @@ TRACE_EVENT(nfs_atomic_open_enter,
 
 		TP_STRUCT__entry(
 			__field(unsigned long, flags)
-			__field(unsigned int, fmode)
+			__field(unsigned long, fmode)
 			__field(dev_t, dev)
 			__field(u64, dir)
 			__string(name, ctx->dentry->d_name.name)
@@ -453,15 +365,15 @@ TRACE_EVENT(nfs_atomic_open_enter,
 			__entry->dev = dir->i_sb->s_dev;
 			__entry->dir = NFS_FILEID(dir);
 			__entry->flags = flags;
-			__entry->fmode = (__force unsigned int)ctx->mode;
+			__entry->fmode = (__force unsigned long)ctx->mode;
 			__assign_str(name, ctx->dentry->d_name.name);
 		),
 
 		TP_printk(
 			"flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
 			__entry->flags,
-			show_open_flags(__entry->flags),
-			show_fmode_flags(__entry->fmode),
+			show_fs_fcntl_open_flags(__entry->flags),
+			show_fs_fmode_flags(__entry->fmode),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->dir,
 			__get_str(name)
@@ -481,7 +393,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
 		TP_STRUCT__entry(
 			__field(unsigned long, error)
 			__field(unsigned long, flags)
-			__field(unsigned int, fmode)
+			__field(unsigned long, fmode)
 			__field(dev_t, dev)
 			__field(u64, dir)
 			__string(name, ctx->dentry->d_name.name)
@@ -492,7 +404,7 @@ TRACE_EVENT(nfs_atomic_open_exit,
 			__entry->dev = dir->i_sb->s_dev;
 			__entry->dir = NFS_FILEID(dir);
 			__entry->flags = flags;
-			__entry->fmode = (__force unsigned int)ctx->mode;
+			__entry->fmode = (__force unsigned long)ctx->mode;
 			__assign_str(name, ctx->dentry->d_name.name);
 		),
 
@@ -501,8 +413,8 @@ TRACE_EVENT(nfs_atomic_open_exit,
 			"name=%02x:%02x:%llu/%s",
 			-__entry->error, nfs_show_status(__entry->error),
 			__entry->flags,
-			show_open_flags(__entry->flags),
-			show_fmode_flags(__entry->fmode),
+			show_fs_fcntl_open_flags(__entry->flags),
+			show_fs_fmode_flags(__entry->fmode),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->dir,
 			__get_str(name)
@@ -535,7 +447,7 @@ TRACE_EVENT(nfs_create_enter,
 		TP_printk(
 			"flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
 			__entry->flags,
-			show_open_flags(__entry->flags),
+			show_fs_fcntl_open_flags(__entry->flags),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->dir,
 			__get_str(name)
@@ -572,7 +484,7 @@ TRACE_EVENT(nfs_create_exit,
 			"error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
 			-__entry->error, nfs_show_status(__entry->error),
 			__entry->flags,
-			show_open_flags(__entry->flags),
+			show_fs_fcntl_open_flags(__entry->flags),
 			MAJOR(__entry->dev), MINOR(__entry->dev),
 			(unsigned long long)__entry->dir,
 			__get_str(name)
diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
new file mode 100644
index 000000000000..84e20c43d0c3
--- /dev/null
+++ b/include/trace/events/fs.h
@@ -0,0 +1,146 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Display helpers for generic filesystem items
+ *
+ * Author: Chuck Lever <chuck.lever@oracle.com>
+ *
+ * Copyright (c) 2020, Oracle and/or its affiliates.
+ */
+
+#include <linux/fs.h>
+
+#define show_fs_dirent_type(x) \
+	__print_symbolic(x, \
+		{ DT_UNKNOWN,		"UNKNOWN" }, \
+		{ DT_FIFO,		"FIFO" }, \
+		{ DT_CHR,		"CHR" }, \
+		{ DT_DIR,		"DIR" }, \
+		{ DT_BLK,		"BLK" }, \
+		{ DT_REG,		"REG" }, \
+		{ DT_LNK,		"LNK" }, \
+		{ DT_SOCK,		"SOCK" }, \
+		{ DT_WHT,		"WHT" })
+
+#define show_fs_fcntl_open_flags(x) \
+	__print_flags(x, "|", \
+		{ O_WRONLY,		"O_WRONLY" }, \
+		{ O_RDWR,		"O_RDWR" }, \
+		{ O_CREAT,		"O_CREAT" }, \
+		{ O_EXCL,		"O_EXCL" }, \
+		{ O_NOCTTY,		"O_NOCTTY" }, \
+		{ O_TRUNC,		"O_TRUNC" }, \
+		{ O_APPEND,		"O_APPEND" }, \
+		{ O_NONBLOCK,		"O_NONBLOCK" }, \
+		{ O_DSYNC,		"O_DSYNC" }, \
+		{ O_DIRECT,		"O_DIRECT" }, \
+		{ O_LARGEFILE,		"O_LARGEFILE" }, \
+		{ O_DIRECTORY,		"O_DIRECTORY" }, \
+		{ O_NOFOLLOW,		"O_NOFOLLOW" }, \
+		{ O_NOATIME,		"O_NOATIME" }, \
+		{ O_CLOEXEC,		"O_CLOEXEC" })
+
+#define __fmode_flag(x)	{ (__force unsigned long)FMODE_##x, #x }
+#define show_fs_fmode_flags(x) \
+	__print_flags(x, "|", \
+		__fmode_flag(READ), \
+		__fmode_flag(WRITE), \
+		__fmode_flag(LSEEK), \
+		__fmode_flag(PREAD), \
+		__fmode_flag(PWRITE), \
+		__fmode_flag(EXEC), \
+		__fmode_flag(NDELAY), \
+		__fmode_flag(EXCL), \
+		__fmode_flag(WRITE_IOCTL), \
+		__fmode_flag(32BITHASH), \
+		__fmode_flag(64BITHASH), \
+		__fmode_flag(NOCMTIME), \
+		__fmode_flag(RANDOM), \
+		__fmode_flag(UNSIGNED_OFFSET), \
+		__fmode_flag(PATH), \
+		__fmode_flag(ATOMIC_POS), \
+		__fmode_flag(WRITER), \
+		__fmode_flag(CAN_READ), \
+		__fmode_flag(CAN_WRITE), \
+		__fmode_flag(OPENED), \
+		__fmode_flag(CREATED), \
+		__fmode_flag(STREAM), \
+		__fmode_flag(NONOTIFY), \
+		__fmode_flag(NOWAIT), \
+		__fmode_flag(NEED_UNMOUNT), \
+		__fmode_flag(NOACCOUNT), \
+		__fmode_flag(BUF_RASYNC))
+
+#ifdef CONFIG_64BIT
+#define show_fs_fcntl_cmd(x) \
+	__print_symbolic(x, \
+		{ F_DUPFD,		"DUPFD" }, \
+		{ F_GETFD,		"GETFD" }, \
+		{ F_SETFD,		"SETFD" }, \
+		{ F_GETFL,		"GETFL" }, \
+		{ F_SETFL,		"SETFL" }, \
+		{ F_GETLK,		"GETLK" }, \
+		{ F_SETLK,		"SETLK" }, \
+		{ F_SETLKW,		"SETLKW" }, \
+		{ F_SETOWN,		"SETOWN" }, \
+		{ F_GETOWN,		"GETOWN" }, \
+		{ F_SETSIG,		"SETSIG" }, \
+		{ F_GETSIG,		"GETSIG" }, \
+		{ F_SETOWN_EX,		"SETOWN_EX" }, \
+		{ F_GETOWN_EX,		"GETOWN_EX" }, \
+		{ F_GETOWNER_UIDS,	"GETOWNER_UIDS" }, \
+		{ F_OFD_GETLK,		"OFD_GETLK" }, \
+		{ F_OFD_SETLK,		"OFD_SETLK" }, \
+		{ F_OFD_SETLKW,		"OFD_SETLKW" })
+#else /* CONFIG_64BIT */
+#define show_fs_fcntl_cmd(x) \
+	__print_symbolic(x, \
+		{ F_DUPFD,		"DUPFD" }, \
+		{ F_GETFD,		"GETFD" }, \
+		{ F_SETFD,		"SETFD" }, \
+		{ F_GETFL,		"GETFL" }, \
+		{ F_SETFL,		"SETFL" }, \
+		{ F_GETLK,		"GETLK" }, \
+		{ F_SETLK,		"SETLK" }, \
+		{ F_SETLKW,		"SETLKW" }, \
+		{ F_SETOWN,		"SETOWN" }, \
+		{ F_GETOWN,		"GETOWN" }, \
+		{ F_SETSIG,		"SETSIG" }, \
+		{ F_GETSIG,		"GETSIG" }, \
+		{ F_GETLK64,		"GETLK64" }, \
+		{ F_SETLK64,		"SETLK64" }, \
+		{ F_SETLKW64,		"SETLKW64" }, \
+		{ F_SETOWN_EX,		"SETOWN_EX" }, \
+		{ F_GETOWN_EX,		"GETOWN_EX" }, \
+		{ F_GETOWNER_UIDS,	"GETOWNER_UIDS" }, \
+		{ F_OFD_GETLK,		"OFD_GETLK" }, \
+		{ F_OFD_SETLK,		"OFD_SETLK" }, \
+		{ F_OFD_SETLKW,		"OFD_SETLKW" })
+#endif /* CONFIG_64BIT */
+
+#define show_fs_fcntl_lock_type(x) \
+	__print_symbolic(x, \
+		{ F_RDLCK,		"RDLCK" }, \
+		{ F_WRLCK,		"WRLCK" }, \
+		{ F_UNLCK,		"UNLCK" })
+
+#define show_fs_lookup_flags(flags) \
+	__print_flags(flags, "|", \
+		{ LOOKUP_FOLLOW,	"FOLLOW" }, \
+		{ LOOKUP_DIRECTORY,	"DIRECTORY" }, \
+		{ LOOKUP_AUTOMOUNT,	"AUTOMOUNT" }, \
+		{ LOOKUP_EMPTY,		"EMPTY" }, \
+		{ LOOKUP_DOWN,		"DOWN" }, \
+		{ LOOKUP_MOUNTPOINT,	"MOUNTPOINT" }, \
+		{ LOOKUP_REVAL,		"REVAL" }, \
+		{ LOOKUP_RCU,		"RCU" }, \
+		{ LOOKUP_OPEN,		"OPEN" }, \
+		{ LOOKUP_CREATE,	"CREATE" }, \
+		{ LOOKUP_EXCL,		"EXCL" }, \
+		{ LOOKUP_RENAME_TARGET,	"RENAME_TARGET" }, \
+		{ LOOKUP_PARENT,	"PARENT" }, \
+		{ LOOKUP_NO_SYMLINKS,	"NO_SYMLINKS" }, \
+		{ LOOKUP_NO_MAGICLINKS,	"NO_MAGICLINKS" }, \
+		{ LOOKUP_NO_XDEV,	"NO_XDEV" }, \
+		{ LOOKUP_BENEATH,	"BENEATH" }, \
+		{ LOOKUP_IN_ROOT,	"IN_ROOT" }, \
+		{ LOOKUP_CACHED,	"CACHED" })


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-11-11 20:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-11 20:16 [PATCH v1 1/2] NFS: Move generic FS show macros to global header kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-10-19 16:46 Chuck Lever
2021-10-22 19:14 ` Olga Kornievskaia
2021-10-22 19:16   ` Chuck Lever III
2021-10-22 19:22     ` Olga Kornievskaia

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.