smb3: add dynamic tracepoints for flush and close
We only had dynamic tracepoints on errors in flush and close, but may be helpful to trace enter and non-error exits for those. Sample trace examples (excerpts) from "cp" and "dd" show two of the new tracepoints. cp-22823 [002] .... 123439.179701: smb3_enter: _cifsFileInfo_put: xid=10 cp-22823 [002] .... 123439.179705: smb3_close_enter: xid=10 sid=0x98871327 tid=0xfcd585ff fid=0xc7f84682 cp-22823 [002] .... 123439.179711: smb3_cmd_enter: sid=0x98871327 tid=0xfcd585ff cmd=6 mid=43 cp-22823 [002] .... 123439.180175: smb3_cmd_done: sid=0x98871327 tid=0xfcd585ff cmd=6 mid=43 cp-22823 [002] .... 123439.180179: smb3_close_done: xid=10 sid=0x98871327 tid=0xfcd585ff fid=0xc7f84682 dd-22981 [003] .... 123696.946011: smb3_flush_enter: xid=24 sid=0x98871327 tid=0xfcd585ff fid=0x1917736f dd-22981 [003] .... 123696.946013: smb3_cmd_enter: sid=0x98871327 tid=0xfcd585ff cmd=7 mid=123 dd-22981 [003] .... 123696.956639: smb3_cmd_done: sid=0x98871327 tid=0x0 cmd=7 mid=123 dd-22981 [003] .... 123696.956644: smb3_flush_done: xid=24 sid=0x98871327 tid=0xfcd585ff fid=0x1917736f Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
This commit is contained in:
parent
cae53f70f8
commit
f90f979726
|
@ -2918,6 +2918,7 @@ SMB2_close_flags(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
rqst.rq_iov = iov;
|
||||
rqst.rq_nvec = 1;
|
||||
|
||||
trace_smb3_close_enter(xid, persistent_fid, tcon->tid, ses->Suid);
|
||||
rc = SMB2_close_init(tcon, &rqst, persistent_fid, volatile_fid);
|
||||
if (rc)
|
||||
goto close_exit;
|
||||
|
@ -2930,7 +2931,9 @@ SMB2_close_flags(const unsigned int xid, struct cifs_tcon *tcon,
|
|||
trace_smb3_close_err(xid, persistent_fid, tcon->tid, ses->Suid,
|
||||
rc);
|
||||
goto close_exit;
|
||||
}
|
||||
} else
|
||||
trace_smb3_close_done(xid, persistent_fid, tcon->tid,
|
||||
ses->Suid);
|
||||
|
||||
atomic_dec(&tcon->num_remote_opens);
|
||||
|
||||
|
@ -3353,13 +3356,16 @@ SMB2_flush(const unsigned int xid, struct cifs_tcon *tcon, u64 persistent_fid,
|
|||
if (rc)
|
||||
goto flush_exit;
|
||||
|
||||
trace_smb3_flush_enter(xid, persistent_fid, tcon->tid, ses->Suid);
|
||||
rc = cifs_send_recv(xid, ses, &rqst, &resp_buftype, flags, &rsp_iov);
|
||||
|
||||
if (rc != 0) {
|
||||
cifs_stats_fail_inc(tcon, SMB2_FLUSH_HE);
|
||||
trace_smb3_flush_err(xid, persistent_fid, tcon->tid, ses->Suid,
|
||||
rc);
|
||||
}
|
||||
} else
|
||||
trace_smb3_flush_done(xid, persistent_fid, tcon->tid,
|
||||
ses->Suid);
|
||||
|
||||
flush_exit:
|
||||
SMB2_flush_free(&rqst);
|
||||
|
|
|
@ -117,6 +117,41 @@ DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
|
|||
/*
|
||||
* For handle based calls other than read and write, and get/set info
|
||||
*/
|
||||
DECLARE_EVENT_CLASS(smb3_fd_class,
|
||||
TP_PROTO(unsigned int xid,
|
||||
__u64 fid,
|
||||
__u32 tid,
|
||||
__u64 sesid),
|
||||
TP_ARGS(xid, fid, tid, sesid),
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, xid)
|
||||
__field(__u64, fid)
|
||||
__field(__u32, tid)
|
||||
__field(__u64, sesid)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->xid = xid;
|
||||
__entry->fid = fid;
|
||||
__entry->tid = tid;
|
||||
__entry->sesid = sesid;
|
||||
),
|
||||
TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
|
||||
__entry->xid, __entry->sesid, __entry->tid, __entry->fid)
|
||||
)
|
||||
|
||||
#define DEFINE_SMB3_FD_EVENT(name) \
|
||||
DEFINE_EVENT(smb3_fd_class, smb3_##name, \
|
||||
TP_PROTO(unsigned int xid, \
|
||||
__u64 fid, \
|
||||
__u32 tid, \
|
||||
__u64 sesid), \
|
||||
TP_ARGS(xid, fid, tid, sesid))
|
||||
|
||||
DEFINE_SMB3_FD_EVENT(flush_enter);
|
||||
DEFINE_SMB3_FD_EVENT(flush_done);
|
||||
DEFINE_SMB3_FD_EVENT(close_enter);
|
||||
DEFINE_SMB3_FD_EVENT(close_done);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_fd_err_class,
|
||||
TP_PROTO(unsigned int xid,
|
||||
__u64 fid,
|
||||
|
|
Loading…
Reference in New Issue