* [PATCH 1/3] NFSv4.1/pnfs: Add a tracepoint for return-on-close events @ 2015-08-21 2:00 Trond Myklebust 2015-08-21 2:00 ` [PATCH 2/3] NFSv4: Add a tracepoint for CB_GETATTR Trond Myklebust 0 siblings, 1 reply; 3+ messages in thread From: Trond Myklebust @ 2015-08-21 2:00 UTC (permalink / raw) To: linux-nfs Allow tracing of return-on-close. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> --- fs/nfs/nfs4trace.h | 1 + fs/nfs/pnfs.c | 1 + 2 files changed, 2 insertions(+) diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h index 470af1a78bec..0b67f7825d00 100644 --- a/fs/nfs/nfs4trace.h +++ b/fs/nfs/nfs4trace.h @@ -1136,6 +1136,7 @@ TRACE_EVENT(nfs4_layoutget, DEFINE_NFS4_INODE_EVENT(nfs4_layoutcommit); DEFINE_NFS4_INODE_EVENT(nfs4_layoutreturn); +DEFINE_NFS4_INODE_EVENT(nfs4_layoutreturn_on_close); #endif /* CONFIG_NFS_V4_1 */ diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 8a3f30b695e2..cf90eeda9d71 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -1144,6 +1144,7 @@ void pnfs_roc_set_barrier(struct inode *ino, u32 barrier) if (pnfs_seqid_is_newer(barrier, lo->plh_barrier)) lo->plh_barrier = barrier; spin_unlock(&ino->i_lock); + trace_nfs4_layoutreturn_on_close(ino, 0); } void pnfs_roc_get_barrier(struct inode *ino, u32 *barrier) -- 2.4.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/3] NFSv4: Add a tracepoint for CB_GETATTR 2015-08-21 2:00 [PATCH 1/3] NFSv4.1/pnfs: Add a tracepoint for return-on-close events Trond Myklebust @ 2015-08-21 2:00 ` Trond Myklebust 2015-08-21 2:00 ` [PATCH 3/3] NFSv4: Add a tracepoint for CB_LAYOUTRECALL Trond Myklebust 0 siblings, 1 reply; 3+ messages in thread From: Trond Myklebust @ 2015-08-21 2:00 UTC (permalink / raw) To: linux-nfs Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> --- fs/nfs/callback_proc.c | 6 ++++- fs/nfs/nfs4trace.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c index 624bef79ba7c..07258d269e5a 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -40,8 +40,11 @@ __be32 nfs4_callback_getattr(struct cb_getattrargs *args, rpc_peeraddr2str(cps->clp->cl_rpcclient, RPC_DISPLAY_ADDR)); inode = nfs_delegation_find_inode(cps->clp, &args->fh); - if (inode == NULL) + if (inode == NULL) { + trace_nfs4_cb_getattr(cps->clp, &args->fh, inode, + -ntohl(res->status)); goto out; + } nfsi = NFS_I(inode); rcu_read_lock(); delegation = rcu_dereference(nfsi->delegation); @@ -60,6 +63,7 @@ __be32 nfs4_callback_getattr(struct cb_getattrargs *args, res->status = 0; out_iput: rcu_read_unlock(); + trace_nfs4_cb_getattr(cps->clp, &args->fh, inode, -ntohl(res->status)); iput(inode); out: dprintk("%s: exit with status = %d\n", __func__, ntohl(res->status)); diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h index 0b67f7825d00..1aa096b665dc 100644 --- a/fs/nfs/nfs4trace.h +++ b/fs/nfs/nfs4trace.h @@ -884,6 +884,65 @@ DEFINE_NFS4_GETATTR_EVENT(nfs4_getattr); DEFINE_NFS4_GETATTR_EVENT(nfs4_lookup_root); DEFINE_NFS4_GETATTR_EVENT(nfs4_fsinfo); +DECLARE_EVENT_CLASS(nfs4_inode_callback_event, + TP_PROTO( + const struct nfs_client *clp, + const struct nfs_fh *fhandle, + const struct inode *inode, + int error + ), + + TP_ARGS(clp, fhandle, inode, error), + + TP_STRUCT__entry( + __field(int, error) + __field(dev_t, dev) + __field(u32, fhandle) + __field(u64, fileid) + __string(dstaddr, clp ? + rpc_peeraddr2str(clp->cl_rpcclient, + RPC_DISPLAY_ADDR) : "unknown") + ), + + TP_fast_assign( + __entry->error = error; + __entry->fhandle = nfs_fhandle_hash(fhandle); + if (inode != NULL) { + __entry->fileid = NFS_FILEID(inode); + __entry->dev = inode->i_sb->s_dev; + } else { + __entry->fileid = 0; + __entry->dev = 0; + } + __assign_str(dstaddr, clp ? + rpc_peeraddr2str(clp->cl_rpcclient, + RPC_DISPLAY_ADDR) : "unknown") + ), + + TP_printk( + "error=%d (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " + "dstaddr=%s", + __entry->error, + show_nfsv4_errors(__entry->error), + MAJOR(__entry->dev), MINOR(__entry->dev), + (unsigned long long)__entry->fileid, + __entry->fhandle, + __get_str(dstaddr) + ) +); + +#define DEFINE_NFS4_INODE_CALLBACK_EVENT(name) \ + DEFINE_EVENT(nfs4_inode_callback_event, name, \ + TP_PROTO( \ + const struct nfs_client *clp, \ + const struct nfs_fh *fhandle, \ + const struct inode *inode, \ + int error \ + ), \ + TP_ARGS(clp, fhandle, inode, error)) +DEFINE_NFS4_INODE_CALLBACK_EVENT(nfs4_cb_getattr); + + DECLARE_EVENT_CLASS(nfs4_idmap_event, TP_PROTO( const char *name, -- 2.4.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 3/3] NFSv4: Add a tracepoint for CB_LAYOUTRECALL 2015-08-21 2:00 ` [PATCH 2/3] NFSv4: Add a tracepoint for CB_GETATTR Trond Myklebust @ 2015-08-21 2:00 ` Trond Myklebust 0 siblings, 0 replies; 3+ messages in thread From: Trond Myklebust @ 2015-08-21 2:00 UTC (permalink / raw) To: linux-nfs Only support for single file layoutrecall for now. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> --- fs/nfs/callback_proc.c | 3 ++- fs/nfs/nfs4trace.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c index 07258d269e5a..b85cf7a30232 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -41,7 +41,7 @@ __be32 nfs4_callback_getattr(struct cb_getattrargs *args, inode = nfs_delegation_find_inode(cps->clp, &args->fh); if (inode == NULL) { - trace_nfs4_cb_getattr(cps->clp, &args->fh, inode, + trace_nfs4_cb_getattr(cps->clp, &args->fh, NULL, -ntohl(res->status)); goto out; } @@ -198,6 +198,7 @@ unlock: spin_unlock(&ino->i_lock); pnfs_free_lseg_list(&free_me_list); pnfs_put_layout_hdr(lo); + trace_nfs4_cb_layoutrecall_inode(clp, &args->cbl_fh, ino, -rv); iput(ino); out: return rv; diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h index 1aa096b665dc..28df12e525ba 100644 --- a/fs/nfs/nfs4trace.h +++ b/fs/nfs/nfs4trace.h @@ -941,6 +941,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_callback_event, ), \ TP_ARGS(clp, fhandle, inode, error)) DEFINE_NFS4_INODE_CALLBACK_EVENT(nfs4_cb_getattr); +DEFINE_NFS4_INODE_CALLBACK_EVENT(nfs4_cb_layoutrecall_inode); DECLARE_EVENT_CLASS(nfs4_idmap_event, -- 2.4.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-08-21 2:00 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-08-21 2:00 [PATCH 1/3] NFSv4.1/pnfs: Add a tracepoint for return-on-close events Trond Myklebust 2015-08-21 2:00 ` [PATCH 2/3] NFSv4: Add a tracepoint for CB_GETATTR Trond Myklebust 2015-08-21 2:00 ` [PATCH 3/3] NFSv4: Add a tracepoint for CB_LAYOUTRECALL Trond Myklebust
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox