mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
NFSv4.2: Add tracepoints for getxattr, setxattr, and removexattr
These functions take similar arguments, and can share a tracepoint class for common formatting. Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
3a100e4d8a
commit
27ffed1040
@ -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,
|
ret = nfs4_call_sync(server->client, server, &msg, &args.seq_args,
|
||||||
&res.seq_res, 1);
|
&res.seq_res, 1);
|
||||||
|
trace_nfs4_removexattr(inode, name, ret);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
nfs4_update_changeattr(inode, &res.cinfo, timestamp, 0);
|
nfs4_update_changeattr(inode, &res.cinfo, timestamp, 0);
|
||||||
|
|
||||||
@ -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,
|
ret = nfs4_call_sync(server->client, server, &msg, &arg.seq_args,
|
||||||
&res.seq_res, 1);
|
&res.seq_res, 1);
|
||||||
|
trace_nfs4_setxattr(inode, name, ret);
|
||||||
|
|
||||||
for (; np > 0; np--)
|
for (; np > 0; np--)
|
||||||
put_page(pages[np - 1]);
|
put_page(pages[np - 1]);
|
||||||
@ -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,
|
ret = nfs4_call_sync(server->client, server, &msg, &arg.seq_args,
|
||||||
&res.seq_res, 0);
|
&res.seq_res, 0);
|
||||||
|
trace_nfs4_getxattr(inode, name, ret);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -2496,6 +2496,52 @@ TRACE_EVENT(nfs4_offload_cancel,
|
|||||||
__entry->stateid_seq, __entry->stateid_hash
|
__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_2 */
|
||||||
|
|
||||||
#endif /* CONFIG_NFS_V4_1 */
|
#endif /* CONFIG_NFS_V4_1 */
|
||||||
|
Loading…
Reference in New Issue
Block a user