|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | /* | 
|  | * Display helpers for NFS protocol elements | 
|  | * | 
|  | * Author: Chuck Lever <chuck.lever@oracle.com> | 
|  | * | 
|  | * Copyright (c) 2020, Oracle and/or its affiliates. | 
|  | */ | 
|  |  | 
|  | #include <linux/nfs.h> | 
|  | #include <linux/nfs4.h> | 
|  | #include <uapi/linux/nfs.h> | 
|  |  | 
|  | TRACE_DEFINE_ENUM(NFS_OK); | 
|  | TRACE_DEFINE_ENUM(NFSERR_PERM); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NOENT); | 
|  | TRACE_DEFINE_ENUM(NFSERR_IO); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NXIO); | 
|  | TRACE_DEFINE_ENUM(NFSERR_EAGAIN); | 
|  | TRACE_DEFINE_ENUM(NFSERR_ACCES); | 
|  | TRACE_DEFINE_ENUM(NFSERR_EXIST); | 
|  | TRACE_DEFINE_ENUM(NFSERR_XDEV); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NODEV); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NOTDIR); | 
|  | TRACE_DEFINE_ENUM(NFSERR_ISDIR); | 
|  | TRACE_DEFINE_ENUM(NFSERR_INVAL); | 
|  | TRACE_DEFINE_ENUM(NFSERR_FBIG); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NOSPC); | 
|  | TRACE_DEFINE_ENUM(NFSERR_ROFS); | 
|  | TRACE_DEFINE_ENUM(NFSERR_MLINK); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NAMETOOLONG); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NOTEMPTY); | 
|  | TRACE_DEFINE_ENUM(NFSERR_DQUOT); | 
|  | TRACE_DEFINE_ENUM(NFSERR_STALE); | 
|  | TRACE_DEFINE_ENUM(NFSERR_REMOTE); | 
|  | TRACE_DEFINE_ENUM(NFSERR_WFLUSH); | 
|  | TRACE_DEFINE_ENUM(NFSERR_BADHANDLE); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NOT_SYNC); | 
|  | TRACE_DEFINE_ENUM(NFSERR_BAD_COOKIE); | 
|  | TRACE_DEFINE_ENUM(NFSERR_NOTSUPP); | 
|  | TRACE_DEFINE_ENUM(NFSERR_TOOSMALL); | 
|  | TRACE_DEFINE_ENUM(NFSERR_SERVERFAULT); | 
|  | TRACE_DEFINE_ENUM(NFSERR_BADTYPE); | 
|  | TRACE_DEFINE_ENUM(NFSERR_JUKEBOX); | 
|  |  | 
|  | #define show_nfs_status(x) \ | 
|  | __print_symbolic(x, \ | 
|  | { NFS_OK,			"OK" }, \ | 
|  | { NFSERR_PERM,			"PERM" }, \ | 
|  | { NFSERR_NOENT,			"NOENT" }, \ | 
|  | { NFSERR_IO,			"IO" }, \ | 
|  | { NFSERR_NXIO,			"NXIO" }, \ | 
|  | { ECHILD,			"CHILD" }, \ | 
|  | { ETIMEDOUT,			"TIMEDOUT" }, \ | 
|  | { NFSERR_EAGAIN,		"AGAIN" }, \ | 
|  | { NFSERR_ACCES,			"ACCES" }, \ | 
|  | { NFSERR_EXIST,			"EXIST" }, \ | 
|  | { NFSERR_XDEV,			"XDEV" }, \ | 
|  | { NFSERR_NODEV,			"NODEV" }, \ | 
|  | { NFSERR_NOTDIR,		"NOTDIR" }, \ | 
|  | { NFSERR_ISDIR,			"ISDIR" }, \ | 
|  | { NFSERR_INVAL,			"INVAL" }, \ | 
|  | { NFSERR_FBIG,			"FBIG" }, \ | 
|  | { NFSERR_NOSPC,			"NOSPC" }, \ | 
|  | { NFSERR_ROFS,			"ROFS" }, \ | 
|  | { NFSERR_MLINK,			"MLINK" }, \ | 
|  | { NFSERR_NAMETOOLONG,		"NAMETOOLONG" }, \ | 
|  | { NFSERR_NOTEMPTY,		"NOTEMPTY" }, \ | 
|  | { NFSERR_DQUOT,			"DQUOT" }, \ | 
|  | { NFSERR_STALE,			"STALE" }, \ | 
|  | { NFSERR_REMOTE,		"REMOTE" }, \ | 
|  | { NFSERR_WFLUSH,		"WFLUSH" }, \ | 
|  | { NFSERR_BADHANDLE,		"BADHANDLE" }, \ | 
|  | { NFSERR_NOT_SYNC,		"NOTSYNC" }, \ | 
|  | { NFSERR_BAD_COOKIE,		"BADCOOKIE" }, \ | 
|  | { NFSERR_NOTSUPP,		"NOTSUPP" }, \ | 
|  | { NFSERR_TOOSMALL,		"TOOSMALL" }, \ | 
|  | { NFSERR_SERVERFAULT,		"REMOTEIO" }, \ | 
|  | { NFSERR_BADTYPE,		"BADTYPE" }, \ | 
|  | { NFSERR_JUKEBOX,		"JUKEBOX" }) | 
|  |  | 
|  | TRACE_DEFINE_ENUM(NFS_UNSTABLE); | 
|  | TRACE_DEFINE_ENUM(NFS_DATA_SYNC); | 
|  | TRACE_DEFINE_ENUM(NFS_FILE_SYNC); | 
|  |  | 
|  | #define show_nfs_stable_how(x) \ | 
|  | __print_symbolic(x, \ | 
|  | { NFS_UNSTABLE,			"UNSTABLE" }, \ | 
|  | { NFS_DATA_SYNC,		"DATA_SYNC" }, \ | 
|  | { NFS_FILE_SYNC,		"FILE_SYNC" }) | 
|  |  | 
|  | TRACE_DEFINE_ENUM(NFS4_OK); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_ACCESS); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_ATTRNOTSUPP); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_ADMIN_REVOKED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BACK_CHAN_BUSY); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADCHAR); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADHANDLE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADIOMODE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADLAYOUT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADLABEL); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADNAME); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADOWNER); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADSESSION); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADSLOT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADTYPE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BADXDR); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BAD_COOKIE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BAD_HIGH_SLOT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BAD_RANGE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BAD_SEQID); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BAD_SESSION_DIGEST); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_BAD_STATEID); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_CB_PATH_DOWN); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_CLID_INUSE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_CLIENTID_BUSY); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_COMPLETE_ALREADY); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_CONN_NOT_BOUND_TO_SESSION); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DEADLOCK); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DEADSESSION); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DELAY); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DELEG_ALREADY_WANTED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DELEG_REVOKED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DENIED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DIRDELEG_UNAVAIL); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_DQUOT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_ENCR_ALG_UNSUPP); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_EXIST); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_EXPIRED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_FBIG); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_FHEXPIRED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_FILE_OPEN); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_GRACE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_HASH_ALG_UNSUPP); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_INVAL); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_IO); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_ISDIR); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_LAYOUTTRYLATER); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_LAYOUTUNAVAILABLE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_LEASE_MOVED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_LOCKED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_LOCKS_HELD); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_LOCK_RANGE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_MINOR_VERS_MISMATCH); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_MLINK); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_MOVED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NAMETOOLONG); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOENT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOFILEHANDLE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOMATCHING_LAYOUT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOSPC); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOTDIR); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOTEMPTY); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOTSUPP); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOT_ONLY_OP); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NOT_SAME); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NO_GRACE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_NXIO); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_OLD_STATEID); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_OPENMODE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_OP_ILLEGAL); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_OP_NOT_IN_SESSION); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_PERM); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_PNFS_IO_HOLE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_PNFS_NO_LAYOUT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RECALLCONFLICT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RECLAIM_BAD); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RECLAIM_CONFLICT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_REJECT_DELEG); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_REP_TOO_BIG); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_REP_TOO_BIG_TO_CACHE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_REQ_TOO_BIG); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RESOURCE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RESTOREFH); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RETRY_UNCACHED_REP); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RETURNCONFLICT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_ROFS); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SAME); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SHARE_DENIED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SEQUENCE_POS); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SEQ_FALSE_RETRY); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SEQ_MISORDERED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SERVERFAULT); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_STALE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_STALE_CLIENTID); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_STALE_STATEID); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_SYMLINK); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_TOOSMALL); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_TOO_MANY_OPS); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_UNKNOWN_LAYOUTTYPE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_UNSAFE_COMPOUND); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_WRONGSEC); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_WRONG_CRED); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_WRONG_TYPE); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_XDEV); | 
|  |  | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_MDS); | 
|  | TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS); | 
|  |  | 
|  | #define show_nfs4_status(x) \ | 
|  | __print_symbolic(x, \ | 
|  | { NFS4_OK,			"OK" }, \ | 
|  | { EPERM,			"EPERM" }, \ | 
|  | { ENOENT,			"ENOENT" }, \ | 
|  | { EIO,				"EIO" }, \ | 
|  | { ENXIO,			"ENXIO" }, \ | 
|  | { EACCES,			"EACCES" }, \ | 
|  | { EEXIST,			"EEXIST" }, \ | 
|  | { EXDEV,			"EXDEV" }, \ | 
|  | { ENOTDIR,			"ENOTDIR" }, \ | 
|  | { EISDIR,			"EISDIR" }, \ | 
|  | { EFBIG,			"EFBIG" }, \ | 
|  | { ENOSPC,			"ENOSPC" }, \ | 
|  | { EROFS,			"EROFS" }, \ | 
|  | { EMLINK,			"EMLINK" }, \ | 
|  | { ENAMETOOLONG,			"ENAMETOOLONG" }, \ | 
|  | { ENOTEMPTY,			"ENOTEMPTY" }, \ | 
|  | { EDQUOT,			"EDQUOT" }, \ | 
|  | { ESTALE,			"ESTALE" }, \ | 
|  | { EBADHANDLE,			"EBADHANDLE" }, \ | 
|  | { EBADCOOKIE,			"EBADCOOKIE" }, \ | 
|  | { ENOTSUPP,			"ENOTSUPP" }, \ | 
|  | { ETOOSMALL,			"ETOOSMALL" }, \ | 
|  | { EREMOTEIO,			"EREMOTEIO" }, \ | 
|  | { EBADTYPE,			"EBADTYPE" }, \ | 
|  | { EAGAIN,			"EAGAIN" }, \ | 
|  | { ELOOP,			"ELOOP" }, \ | 
|  | { EOPNOTSUPP,			"EOPNOTSUPP" }, \ | 
|  | { EDEADLK,			"EDEADLK" }, \ | 
|  | { ENOMEM,			"ENOMEM" }, \ | 
|  | { EKEYEXPIRED,			"EKEYEXPIRED" }, \ | 
|  | { ETIMEDOUT,			"ETIMEDOUT" }, \ | 
|  | { ERESTARTSYS,			"ERESTARTSYS" }, \ | 
|  | { ECONNREFUSED,			"ECONNREFUSED" }, \ | 
|  | { ECONNRESET,			"ECONNRESET" }, \ | 
|  | { ENETUNREACH,			"ENETUNREACH" }, \ | 
|  | { EHOSTUNREACH,			"EHOSTUNREACH" }, \ | 
|  | { EHOSTDOWN,			"EHOSTDOWN" }, \ | 
|  | { EPIPE,			"EPIPE" }, \ | 
|  | { EPFNOSUPPORT,			"EPFNOSUPPORT" }, \ | 
|  | { EINVAL,			"EINVAL" }, \ | 
|  | { EPROTONOSUPPORT,		"EPROTONOSUPPORT" }, \ | 
|  | { NFS4ERR_ACCESS,		"ACCESS" }, \ | 
|  | { NFS4ERR_ATTRNOTSUPP,		"ATTRNOTSUPP" }, \ | 
|  | { NFS4ERR_ADMIN_REVOKED,	"ADMIN_REVOKED" }, \ | 
|  | { NFS4ERR_BACK_CHAN_BUSY,	"BACK_CHAN_BUSY" }, \ | 
|  | { NFS4ERR_BADCHAR,		"BADCHAR" }, \ | 
|  | { NFS4ERR_BADHANDLE,		"BADHANDLE" }, \ | 
|  | { NFS4ERR_BADIOMODE,		"BADIOMODE" }, \ | 
|  | { NFS4ERR_BADLAYOUT,		"BADLAYOUT" }, \ | 
|  | { NFS4ERR_BADLABEL,		"BADLABEL" }, \ | 
|  | { NFS4ERR_BADNAME,		"BADNAME" }, \ | 
|  | { NFS4ERR_BADOWNER,		"BADOWNER" }, \ | 
|  | { NFS4ERR_BADSESSION,		"BADSESSION" }, \ | 
|  | { NFS4ERR_BADSLOT,		"BADSLOT" }, \ | 
|  | { NFS4ERR_BADTYPE,		"BADTYPE" }, \ | 
|  | { NFS4ERR_BADXDR,		"BADXDR" }, \ | 
|  | { NFS4ERR_BAD_COOKIE,		"BAD_COOKIE" }, \ | 
|  | { NFS4ERR_BAD_HIGH_SLOT,	"BAD_HIGH_SLOT" }, \ | 
|  | { NFS4ERR_BAD_RANGE,		"BAD_RANGE" }, \ | 
|  | { NFS4ERR_BAD_SEQID,		"BAD_SEQID" }, \ | 
|  | { NFS4ERR_BAD_SESSION_DIGEST,	"BAD_SESSION_DIGEST" }, \ | 
|  | { NFS4ERR_BAD_STATEID,		"BAD_STATEID" }, \ | 
|  | { NFS4ERR_CB_PATH_DOWN,		"CB_PATH_DOWN" }, \ | 
|  | { NFS4ERR_CLID_INUSE,		"CLID_INUSE" }, \ | 
|  | { NFS4ERR_CLIENTID_BUSY,	"CLIENTID_BUSY" }, \ | 
|  | { NFS4ERR_COMPLETE_ALREADY,	"COMPLETE_ALREADY" }, \ | 
|  | { NFS4ERR_CONN_NOT_BOUND_TO_SESSION, "CONN_NOT_BOUND_TO_SESSION" }, \ | 
|  | { NFS4ERR_DEADLOCK,		"DEADLOCK" }, \ | 
|  | { NFS4ERR_DEADSESSION,		"DEAD_SESSION" }, \ | 
|  | { NFS4ERR_DELAY,		"DELAY" }, \ | 
|  | { NFS4ERR_DELEG_ALREADY_WANTED,	"DELEG_ALREADY_WANTED" }, \ | 
|  | { NFS4ERR_DELEG_REVOKED,	"DELEG_REVOKED" }, \ | 
|  | { NFS4ERR_DENIED,		"DENIED" }, \ | 
|  | { NFS4ERR_DIRDELEG_UNAVAIL,	"DIRDELEG_UNAVAIL" }, \ | 
|  | { NFS4ERR_DQUOT,		"DQUOT" }, \ | 
|  | { NFS4ERR_ENCR_ALG_UNSUPP,	"ENCR_ALG_UNSUPP" }, \ | 
|  | { NFS4ERR_EXIST,		"EXIST" }, \ | 
|  | { NFS4ERR_EXPIRED,		"EXPIRED" }, \ | 
|  | { NFS4ERR_FBIG,			"FBIG" }, \ | 
|  | { NFS4ERR_FHEXPIRED,		"FHEXPIRED" }, \ | 
|  | { NFS4ERR_FILE_OPEN,		"FILE_OPEN" }, \ | 
|  | { NFS4ERR_GRACE,		"GRACE" }, \ | 
|  | { NFS4ERR_HASH_ALG_UNSUPP,	"HASH_ALG_UNSUPP" }, \ | 
|  | { NFS4ERR_INVAL,		"INVAL" }, \ | 
|  | { NFS4ERR_IO,			"IO" }, \ | 
|  | { NFS4ERR_ISDIR,		"ISDIR" }, \ | 
|  | { NFS4ERR_LAYOUTTRYLATER,	"LAYOUTTRYLATER" }, \ | 
|  | { NFS4ERR_LAYOUTUNAVAILABLE,	"LAYOUTUNAVAILABLE" }, \ | 
|  | { NFS4ERR_LEASE_MOVED,		"LEASE_MOVED" }, \ | 
|  | { NFS4ERR_LOCKED,		"LOCKED" }, \ | 
|  | { NFS4ERR_LOCKS_HELD,		"LOCKS_HELD" }, \ | 
|  | { NFS4ERR_LOCK_RANGE,		"LOCK_RANGE" }, \ | 
|  | { NFS4ERR_MINOR_VERS_MISMATCH,	"MINOR_VERS_MISMATCH" }, \ | 
|  | { NFS4ERR_MLINK,		"MLINK" }, \ | 
|  | { NFS4ERR_MOVED,		"MOVED" }, \ | 
|  | { NFS4ERR_NAMETOOLONG,		"NAMETOOLONG" }, \ | 
|  | { NFS4ERR_NOENT,		"NOENT" }, \ | 
|  | { NFS4ERR_NOFILEHANDLE,		"NOFILEHANDLE" }, \ | 
|  | { NFS4ERR_NOMATCHING_LAYOUT,	"NOMATCHING_LAYOUT" }, \ | 
|  | { NFS4ERR_NOSPC,		"NOSPC" }, \ | 
|  | { NFS4ERR_NOTDIR,		"NOTDIR" }, \ | 
|  | { NFS4ERR_NOTEMPTY,		"NOTEMPTY" }, \ | 
|  | { NFS4ERR_NOTSUPP,		"NOTSUPP" }, \ | 
|  | { NFS4ERR_NOT_ONLY_OP,		"NOT_ONLY_OP" }, \ | 
|  | { NFS4ERR_NOT_SAME,		"NOT_SAME" }, \ | 
|  | { NFS4ERR_NO_GRACE,		"NO_GRACE" }, \ | 
|  | { NFS4ERR_NXIO,			"NXIO" }, \ | 
|  | { NFS4ERR_OLD_STATEID,		"OLD_STATEID" }, \ | 
|  | { NFS4ERR_OPENMODE,		"OPENMODE" }, \ | 
|  | { NFS4ERR_OP_ILLEGAL,		"OP_ILLEGAL" }, \ | 
|  | { NFS4ERR_OP_NOT_IN_SESSION,	"OP_NOT_IN_SESSION" }, \ | 
|  | { NFS4ERR_PERM,			"PERM" }, \ | 
|  | { NFS4ERR_PNFS_IO_HOLE,		"PNFS_IO_HOLE" }, \ | 
|  | { NFS4ERR_PNFS_NO_LAYOUT,	"PNFS_NO_LAYOUT" }, \ | 
|  | { NFS4ERR_RECALLCONFLICT,	"RECALLCONFLICT" }, \ | 
|  | { NFS4ERR_RECLAIM_BAD,		"RECLAIM_BAD" }, \ | 
|  | { NFS4ERR_RECLAIM_CONFLICT,	"RECLAIM_CONFLICT" }, \ | 
|  | { NFS4ERR_REJECT_DELEG,		"REJECT_DELEG" }, \ | 
|  | { NFS4ERR_REP_TOO_BIG,		"REP_TOO_BIG" }, \ | 
|  | { NFS4ERR_REP_TOO_BIG_TO_CACHE,	"REP_TOO_BIG_TO_CACHE" }, \ | 
|  | { NFS4ERR_REQ_TOO_BIG,		"REQ_TOO_BIG" }, \ | 
|  | { NFS4ERR_RESOURCE,		"RESOURCE" }, \ | 
|  | { NFS4ERR_RESTOREFH,		"RESTOREFH" }, \ | 
|  | { NFS4ERR_RETRY_UNCACHED_REP,	"RETRY_UNCACHED_REP" }, \ | 
|  | { NFS4ERR_RETURNCONFLICT,	"RETURNCONFLICT" }, \ | 
|  | { NFS4ERR_ROFS,			"ROFS" }, \ | 
|  | { NFS4ERR_SAME,			"SAME" }, \ | 
|  | { NFS4ERR_SHARE_DENIED,		"SHARE_DENIED" }, \ | 
|  | { NFS4ERR_SEQUENCE_POS,		"SEQUENCE_POS" }, \ | 
|  | { NFS4ERR_SEQ_FALSE_RETRY,	"SEQ_FALSE_RETRY" }, \ | 
|  | { NFS4ERR_SEQ_MISORDERED,	"SEQ_MISORDERED" }, \ | 
|  | { NFS4ERR_SERVERFAULT,		"SERVERFAULT" }, \ | 
|  | { NFS4ERR_STALE,		"STALE" }, \ | 
|  | { NFS4ERR_STALE_CLIENTID,	"STALE_CLIENTID" }, \ | 
|  | { NFS4ERR_STALE_STATEID,	"STALE_STATEID" }, \ | 
|  | { NFS4ERR_SYMLINK,		"SYMLINK" }, \ | 
|  | { NFS4ERR_TOOSMALL,		"TOOSMALL" }, \ | 
|  | { NFS4ERR_TOO_MANY_OPS,		"TOO_MANY_OPS" }, \ | 
|  | { NFS4ERR_UNKNOWN_LAYOUTTYPE,	"UNKNOWN_LAYOUTTYPE" }, \ | 
|  | { NFS4ERR_UNSAFE_COMPOUND,	"UNSAFE_COMPOUND" }, \ | 
|  | { NFS4ERR_WRONGSEC,		"WRONGSEC" }, \ | 
|  | { NFS4ERR_WRONG_CRED,		"WRONG_CRED" }, \ | 
|  | { NFS4ERR_WRONG_TYPE,		"WRONG_TYPE" }, \ | 
|  | { NFS4ERR_XDEV,			"XDEV" }, \ | 
|  | /* ***** Internal to Linux NFS client ***** */ \ | 
|  | { NFS4ERR_RESET_TO_MDS,		"RESET_TO_MDS" }, \ | 
|  | { NFS4ERR_RESET_TO_PNFS,	"RESET_TO_PNFS" }) | 
|  |  | 
|  | #define show_nfs4_verifier(x) \ | 
|  | __print_hex_str(x, NFS4_VERIFIER_SIZE) | 
|  |  | 
|  | TRACE_DEFINE_ENUM(IOMODE_READ); | 
|  | TRACE_DEFINE_ENUM(IOMODE_RW); | 
|  | TRACE_DEFINE_ENUM(IOMODE_ANY); | 
|  |  | 
|  | #define show_pnfs_layout_iomode(x) \ | 
|  | __print_symbolic(x, \ | 
|  | { IOMODE_READ,			"READ" }, \ | 
|  | { IOMODE_RW,			"RW" }, \ | 
|  | { IOMODE_ANY,			"ANY" }) | 
|  |  | 
|  | #define show_rca_mask(x) \ | 
|  | __print_flags(x, "|", \ | 
|  | { BIT(RCA4_TYPE_MASK_RDATA_DLG),	"RDATA_DLG" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_WDATA_DLG),	"WDATA_DLG" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_DIR_DLG),		"DIR_DLG" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_FILE_LAYOUT),	"FILE_LAYOUT" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_BLK_LAYOUT),	"BLK_LAYOUT" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_OBJ_LAYOUT_MIN),	"OBJ_LAYOUT_MIN" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_OBJ_LAYOUT_MAX),	"OBJ_LAYOUT_MAX" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_OTHER_LAYOUT_MIN),	"OTHER_LAYOUT_MIN" }, \ | 
|  | { BIT(RCA4_TYPE_MASK_OTHER_LAYOUT_MAX),	"OTHER_LAYOUT_MAX" }) | 
|  |  | 
|  | #define show_nfs4_seq4_status(x) \ | 
|  | __print_flags(x, "|", \ | 
|  | { SEQ4_STATUS_CB_PATH_DOWN,		"CB_PATH_DOWN" }, \ | 
|  | { SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING,	"CB_GSS_CONTEXTS_EXPIRING" }, \ | 
|  | { SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED,	"CB_GSS_CONTEXTS_EXPIRED" }, \ | 
|  | { SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED, "EXPIRED_ALL_STATE_REVOKED" }, \ | 
|  | { SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED, "EXPIRED_SOME_STATE_REVOKED" }, \ | 
|  | { SEQ4_STATUS_ADMIN_STATE_REVOKED,	"ADMIN_STATE_REVOKED" }, \ | 
|  | { SEQ4_STATUS_RECALLABLE_STATE_REVOKED,	"RECALLABLE_STATE_REVOKED" }, \ | 
|  | { SEQ4_STATUS_LEASE_MOVED,		"LEASE_MOVED" }, \ | 
|  | { SEQ4_STATUS_RESTART_RECLAIM_NEEDED,	"RESTART_RECLAIM_NEEDED" }, \ | 
|  | { SEQ4_STATUS_CB_PATH_DOWN_SESSION,	"CB_PATH_DOWN_SESSION" }, \ | 
|  | { SEQ4_STATUS_BACKCHANNEL_FAULT,	"BACKCHANNEL_FAULT" }) | 
|  |  | 
|  | TRACE_DEFINE_ENUM(OP_CB_GETATTR); | 
|  | TRACE_DEFINE_ENUM(OP_CB_RECALL); | 
|  | TRACE_DEFINE_ENUM(OP_CB_LAYOUTRECALL); | 
|  | TRACE_DEFINE_ENUM(OP_CB_NOTIFY); | 
|  | TRACE_DEFINE_ENUM(OP_CB_PUSH_DELEG); | 
|  | TRACE_DEFINE_ENUM(OP_CB_RECALL_ANY); | 
|  | TRACE_DEFINE_ENUM(OP_CB_RECALLABLE_OBJ_AVAIL); | 
|  | TRACE_DEFINE_ENUM(OP_CB_RECALL_SLOT); | 
|  | TRACE_DEFINE_ENUM(OP_CB_SEQUENCE); | 
|  | TRACE_DEFINE_ENUM(OP_CB_WANTS_CANCELLED); | 
|  | TRACE_DEFINE_ENUM(OP_CB_NOTIFY_LOCK); | 
|  | TRACE_DEFINE_ENUM(OP_CB_NOTIFY_DEVICEID); | 
|  | TRACE_DEFINE_ENUM(OP_CB_OFFLOAD); | 
|  | TRACE_DEFINE_ENUM(OP_CB_ILLEGAL); | 
|  |  | 
|  | #define show_nfs4_cb_op(x) \ | 
|  | __print_symbolic(x, \ | 
|  | { 0,				"CB_NULL" }, \ | 
|  | { 1,				"CB_COMPOUND" }, \ | 
|  | { OP_CB_GETATTR,		"CB_GETATTR" }, \ | 
|  | { OP_CB_RECALL,			"CB_RECALL" }, \ | 
|  | { OP_CB_LAYOUTRECALL,		"CB_LAYOUTRECALL" }, \ | 
|  | { OP_CB_NOTIFY,			"CB_NOTIFY" }, \ | 
|  | { OP_CB_PUSH_DELEG,		"CB_PUSH_DELEG" }, \ | 
|  | { OP_CB_RECALL_ANY,		"CB_RECALL_ANY" }, \ | 
|  | { OP_CB_RECALLABLE_OBJ_AVAIL,	"CB_RECALLABLE_OBJ_AVAIL" }, \ | 
|  | { OP_CB_RECALL_SLOT,		"CB_RECALL_SLOT" }, \ | 
|  | { OP_CB_SEQUENCE,		"CB_SEQUENCE" }, \ | 
|  | { OP_CB_WANTS_CANCELLED,	"CB_WANTS_CANCELLED" }, \ | 
|  | { OP_CB_NOTIFY_LOCK,		"CB_NOTIFY_LOCK" }, \ | 
|  | { OP_CB_NOTIFY_DEVICEID,	"CB_NOTIFY_DEVICEID" }, \ | 
|  | { OP_CB_OFFLOAD,		"CB_OFFLOAD" }, \ | 
|  | { OP_CB_ILLEGAL,		"CB_ILLEGAL" }) |