aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/nfs4proc.c6
-rw-r--r--fs/nfs/nfs4trace.h55
2 files changed, 61 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 214f9c4fdeee..c8b5ff6effe9 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -6860,6 +6860,10 @@ nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags)
6860 status = nfs4_wait_for_completion_rpc_task(task); 6860 status = nfs4_wait_for_completion_rpc_task(task);
6861 if (status == 0) 6861 if (status == 0)
6862 status = task->tk_status; 6862 status = task->tk_status;
6863 trace_nfs4_layoutget(lgp->args.ctx,
6864 &lgp->args.range,
6865 &lgp->res.range,
6866 status);
6863 /* if layoutp->len is 0, nfs4_layoutget_prepare called rpc_exit */ 6867 /* if layoutp->len is 0, nfs4_layoutget_prepare called rpc_exit */
6864 if (status == 0 && lgp->res.layoutp->len) 6868 if (status == 0 && lgp->res.layoutp->len)
6865 lseg = pnfs_layout_process(lgp); 6869 lseg = pnfs_layout_process(lgp);
@@ -6945,6 +6949,7 @@ int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp)
6945 if (IS_ERR(task)) 6949 if (IS_ERR(task))
6946 return PTR_ERR(task); 6950 return PTR_ERR(task);
6947 status = task->tk_status; 6951 status = task->tk_status;
6952 trace_nfs4_layoutreturn(lrp->args.inode, status);
6948 dprintk("<-- %s status=%d\n", __func__, status); 6953 dprintk("<-- %s status=%d\n", __func__, status);
6949 rpc_put_task(task); 6954 rpc_put_task(task);
6950 return status; 6955 return status;
@@ -7131,6 +7136,7 @@ nfs4_proc_layoutcommit(struct nfs4_layoutcommit_data *data, bool sync)
7131 if (status != 0) 7136 if (status != 0)
7132 goto out; 7137 goto out;
7133 status = task->tk_status; 7138 status = task->tk_status;
7139 trace_nfs4_layoutcommit(data->args.inode, status);
7134out: 7140out:
7135 dprintk("%s: status %d\n", __func__, status); 7141 dprintk("%s: status %d\n", __func__, status);
7136 rpc_put_task(task); 7142 rpc_put_task(task);
diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h
index 1ea69836443f..b2a2d8a30c66 100644
--- a/fs/nfs/nfs4trace.h
+++ b/fs/nfs/nfs4trace.h
@@ -894,6 +894,61 @@ DECLARE_EVENT_CLASS(nfs4_commit_event,
894DEFINE_NFS4_COMMIT_EVENT(nfs4_commit); 894DEFINE_NFS4_COMMIT_EVENT(nfs4_commit);
895#ifdef CONFIG_NFS_V4_1 895#ifdef CONFIG_NFS_V4_1
896DEFINE_NFS4_COMMIT_EVENT(nfs4_pnfs_commit_ds); 896DEFINE_NFS4_COMMIT_EVENT(nfs4_pnfs_commit_ds);
897
898#define show_pnfs_iomode(iomode) \
899 __print_symbolic(iomode, \
900 { IOMODE_READ, "READ" }, \
901 { IOMODE_RW, "RW" }, \
902 { IOMODE_ANY, "ANY" })
903
904TRACE_EVENT(nfs4_layoutget,
905 TP_PROTO(
906 const struct nfs_open_context *ctx,
907 const struct pnfs_layout_range *args,
908 const struct pnfs_layout_range *res,
909 int error
910 ),
911
912 TP_ARGS(ctx, args, res, error),
913
914 TP_STRUCT__entry(
915 __field(dev_t, dev)
916 __field(u32, fhandle)
917 __field(u64, fileid)
918 __field(u32, iomode)
919 __field(u64, offset)
920 __field(u64, count)
921 __field(int, error)
922 ),
923
924 TP_fast_assign(
925 const struct inode *inode = ctx->dentry->d_inode;
926 __entry->dev = inode->i_sb->s_dev;
927 __entry->fileid = NFS_FILEID(inode);
928 __entry->fhandle = nfs_fhandle_hash(NFS_FH(inode));
929 __entry->iomode = args->iomode;
930 __entry->offset = args->offset;
931 __entry->count = args->length;
932 __entry->error = error;
933 ),
934
935 TP_printk(
936 "error=%d (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
937 "iomode=%s offset=%llu count=%llu",
938 __entry->error,
939 show_nfsv4_errors(__entry->error),
940 MAJOR(__entry->dev), MINOR(__entry->dev),
941 (unsigned long long)__entry->fileid,
942 __entry->fhandle,
943 show_pnfs_iomode(__entry->iomode),
944 (unsigned long long)__entry->offset,
945 (unsigned long long)__entry->count
946 )
947);
948
949DEFINE_NFS4_INODE_EVENT(nfs4_layoutcommit);
950DEFINE_NFS4_INODE_EVENT(nfs4_layoutreturn);
951
897#endif /* CONFIG_NFS_V4_1 */ 952#endif /* CONFIG_NFS_V4_1 */
898 953
899#endif /* _TRACE_NFS4_H */ 954#endif /* _TRACE_NFS4_H */