Commit 40a82417 authored by Olga Kornievskaia's avatar Olga Kornievskaia Committed by Trond Myklebust

NFSv4.2 add tracepoints to FALLOCATE and DEALLOCATE

Add a tracepoint to the FALLOCATE/DEALLOCATE operations.
Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent f628d462
...@@ -83,6 +83,10 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep, ...@@ -83,6 +83,10 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep,
status = nfs_post_op_update_inode_force_wcc(inode, status = nfs_post_op_update_inode_force_wcc(inode,
res.falloc_fattr); res.falloc_fattr);
if (msg->rpc_proc == &nfs4_procedures[NFSPROC4_CLNT_ALLOCATE])
trace_nfs4_fallocate(inode, &args, status);
else
trace_nfs4_deallocate(inode, &args, status);
kfree(res.falloc_fattr); kfree(res.falloc_fattr);
return status; return status;
} }
......
...@@ -2127,6 +2127,62 @@ TRACE_EVENT(nfs4_llseek, ...@@ -2127,6 +2127,62 @@ TRACE_EVENT(nfs4_llseek,
) )
); );
DECLARE_EVENT_CLASS(nfs4_sparse_event,
TP_PROTO(
const struct inode *inode,
const struct nfs42_falloc_args *args,
int error
),
TP_ARGS(inode, args, error),
TP_STRUCT__entry(
__field(unsigned long, error)
__field(loff_t, offset)
__field(loff_t, len)
__field(dev_t, dev)
__field(u32, fhandle)
__field(u64, fileid)
__field(int, stateid_seq)
__field(u32, stateid_hash)
),
TP_fast_assign(
__entry->error = error < 0 ? -error : 0;
__entry->offset = args->falloc_offset;
__entry->len = args->falloc_length;
__entry->dev = inode->i_sb->s_dev;
__entry->fileid = NFS_FILEID(inode);
__entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
__entry->stateid_seq =
be32_to_cpu(args->falloc_stateid.seqid);
__entry->stateid_hash =
nfs_stateid_hash(&args->falloc_stateid);
),
TP_printk(
"error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
"stateid=%d:0x%08x offset=%llu len=%llu",
-__entry->error,
show_nfs4_status(__entry->error),
MAJOR(__entry->dev), MINOR(__entry->dev),
(unsigned long long)__entry->fileid,
__entry->fhandle,
__entry->stateid_seq, __entry->stateid_hash,
(long long)__entry->offset,
(long long)__entry->len
)
);
#define DEFINE_NFS4_SPARSE_EVENT(name) \
DEFINE_EVENT(nfs4_sparse_event, name, \
TP_PROTO( \
const struct inode *inode, \
const struct nfs42_falloc_args *args, \
int error \
), \
TP_ARGS(inode, args, error))
DEFINE_NFS4_SPARSE_EVENT(nfs4_fallocate);
DEFINE_NFS4_SPARSE_EVENT(nfs4_deallocate);
#endif /* CONFIG_NFS_V4_2 */ #endif /* CONFIG_NFS_V4_2 */
#endif /* CONFIG_NFS_V4_1 */ #endif /* CONFIG_NFS_V4_1 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment