Skip to content

Commit

Permalink
NFSv4.2: Add tracepoints for getxattr, setxattr, and removexattr
Browse files Browse the repository at this point in the history
These functions take similar arguments, and can share a tracepoint class
for common formatting.

Signed-off-by: Anna Schumaker <[email protected]>
  • Loading branch information
amschuma-ntap committed Oct 5, 2022
1 parent 3a100e4 commit 27ffed1
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
3 changes: 3 additions & 0 deletions fs/nfs/nfs42proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1175,6 +1175,7 @@ static int _nfs42_proc_removexattr(struct inode *inode, const char *name)

ret = nfs4_call_sync(server->client, server, &msg, &args.seq_args,
&res.seq_res, 1);
trace_nfs4_removexattr(inode, name, ret);
if (!ret)
nfs4_update_changeattr(inode, &res.cinfo, timestamp, 0);

Expand Down Expand Up @@ -1214,6 +1215,7 @@ static int _nfs42_proc_setxattr(struct inode *inode, const char *name,

ret = nfs4_call_sync(server->client, server, &msg, &arg.seq_args,
&res.seq_res, 1);
trace_nfs4_setxattr(inode, name, ret);

for (; np > 0; np--)
put_page(pages[np - 1]);
Expand Down Expand Up @@ -1246,6 +1248,7 @@ static ssize_t _nfs42_proc_getxattr(struct inode *inode, const char *name,

ret = nfs4_call_sync(server->client, server, &msg, &arg.seq_args,
&res.seq_res, 0);
trace_nfs4_getxattr(inode, name, ret);
if (ret < 0)
return ret;

Expand Down
46 changes: 46 additions & 0 deletions fs/nfs/nfs4trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -2496,6 +2496,52 @@ TRACE_EVENT(nfs4_offload_cancel,
__entry->stateid_seq, __entry->stateid_hash
)
);

DECLARE_EVENT_CLASS(nfs4_xattr_event,
TP_PROTO(
const struct inode *inode,
const char *name,
int error
),

TP_ARGS(inode, name, error),

TP_STRUCT__entry(
__field(unsigned long, error)
__field(dev_t, dev)
__field(u32, fhandle)
__field(u64, fileid)
__string(name, name)
),

TP_fast_assign(
__entry->error = error < 0 ? -error : 0;
__entry->dev = inode->i_sb->s_dev;
__entry->fileid = NFS_FILEID(inode);
__entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
__assign_str(name, name);
),

TP_printk(
"error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
"name=%s",
-__entry->error, show_nfs4_status(__entry->error),
MAJOR(__entry->dev), MINOR(__entry->dev),
(unsigned long long)__entry->fileid,
__entry->fhandle, __get_str(name)
)
);
#define DEFINE_NFS4_XATTR_EVENT(name) \
DEFINE_EVENT(nfs4_xattr_event, name, \
TP_PROTO( \
const struct inode *inode, \
const char *name, \
int error \
), \
TP_ARGS(inode, name, error))
DEFINE_NFS4_XATTR_EVENT(nfs4_getxattr);
DEFINE_NFS4_XATTR_EVENT(nfs4_setxattr);
DEFINE_NFS4_XATTR_EVENT(nfs4_removexattr);
#endif /* CONFIG_NFS_V4_2 */

#endif /* CONFIG_NFS_V4_1 */
Expand Down

0 comments on commit 27ffed1

Please sign in to comment.