* 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.