mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
smb3: add tracepoint for sending lease break responses to server
Be able to log a ftrace message on success and/or failure of sending a lease break response to the server. Example output: TASK-PID CPU# |||| TIMESTAMP FUNCTION | | | |||| | | kworker/1:1-5681 [001] .... 11123.530457: smb3_lease_done: sid=0x291e3e0f tid=0x8ba43071 lease_key=0x1852ca0d3ecd9b55847750a86716fde lease_state=0x0 Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Aurelien Aptel <aaptel@suse.com>
This commit is contained in:
parent
9b9c5bea0b
commit
179e44d49c
@ -4277,6 +4277,8 @@ SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
struct kvec iov[1];
|
||||
struct kvec rsp_iov;
|
||||
int resp_buf_type;
|
||||
__u64 *please_key_high;
|
||||
__u64 *please_key_low;
|
||||
|
||||
cifs_dbg(FYI, "SMB2_lease_break\n");
|
||||
rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, (void **) &req,
|
||||
@ -4306,10 +4308,16 @@ SMB2_lease_break(const unsigned int xid, struct cifs_tcon *tcon,
|
||||
rc = cifs_send_recv(xid, ses, &rqst, &resp_buf_type, flags, &rsp_iov);
|
||||
cifs_small_buf_release(req);
|
||||
|
||||
please_key_low = (__u64 *)req->LeaseKey;
|
||||
please_key_high = (__u64 *)(req->LeaseKey+8);
|
||||
if (rc) {
|
||||
cifs_stats_fail_inc(tcon, SMB2_OPLOCK_BREAK_HE);
|
||||
trace_smb3_lease_err(le32_to_cpu(lease_state), tcon->tid,
|
||||
ses->Suid, *please_key_low, *please_key_high, rc);
|
||||
cifs_dbg(FYI, "Send error in Lease Break = %d\n", rc);
|
||||
}
|
||||
} else
|
||||
trace_smb3_lease_done(le32_to_cpu(lease_state), tcon->tid,
|
||||
ses->Suid, *please_key_low, *please_key_high);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
@ -460,6 +460,85 @@ DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
|
||||
DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
|
||||
DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
|
||||
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_lease_done_class,
|
||||
TP_PROTO(__u32 lease_state,
|
||||
__u32 tid,
|
||||
__u64 sesid,
|
||||
__u64 lease_key_low,
|
||||
__u64 lease_key_high),
|
||||
TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
|
||||
TP_STRUCT__entry(
|
||||
__field(__u32, lease_state)
|
||||
__field(__u32, tid)
|
||||
__field(__u64, sesid)
|
||||
__field(__u64, lease_key_low)
|
||||
__field(__u64, lease_key_high)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->lease_state = lease_state;
|
||||
__entry->tid = tid;
|
||||
__entry->sesid = sesid;
|
||||
__entry->lease_key_low = lease_key_low;
|
||||
__entry->lease_key_high = lease_key_high;
|
||||
),
|
||||
TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
|
||||
__entry->sesid, __entry->tid, __entry->lease_key_high,
|
||||
__entry->lease_key_low, __entry->lease_state)
|
||||
)
|
||||
|
||||
#define DEFINE_SMB3_LEASE_DONE_EVENT(name) \
|
||||
DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \
|
||||
TP_PROTO(__u32 lease_state, \
|
||||
__u32 tid, \
|
||||
__u64 sesid, \
|
||||
__u64 lease_key_low, \
|
||||
__u64 lease_key_high), \
|
||||
TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
|
||||
|
||||
DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_lease_err_class,
|
||||
TP_PROTO(__u32 lease_state,
|
||||
__u32 tid,
|
||||
__u64 sesid,
|
||||
__u64 lease_key_low,
|
||||
__u64 lease_key_high,
|
||||
int rc),
|
||||
TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
|
||||
TP_STRUCT__entry(
|
||||
__field(__u32, lease_state)
|
||||
__field(__u32, tid)
|
||||
__field(__u64, sesid)
|
||||
__field(__u64, lease_key_low)
|
||||
__field(__u64, lease_key_high)
|
||||
__field(int, rc)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->lease_state = lease_state;
|
||||
__entry->tid = tid;
|
||||
__entry->sesid = sesid;
|
||||
__entry->lease_key_low = lease_key_low;
|
||||
__entry->lease_key_high = lease_key_high;
|
||||
__entry->rc = rc;
|
||||
),
|
||||
TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
|
||||
__entry->sesid, __entry->tid, __entry->lease_key_high,
|
||||
__entry->lease_key_low, __entry->lease_state, __entry->rc)
|
||||
)
|
||||
|
||||
#define DEFINE_SMB3_LEASE_ERR_EVENT(name) \
|
||||
DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
|
||||
TP_PROTO(__u32 lease_state, \
|
||||
__u32 tid, \
|
||||
__u64 sesid, \
|
||||
__u64 lease_key_low, \
|
||||
__u64 lease_key_high, \
|
||||
int rc), \
|
||||
TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
|
||||
|
||||
DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
|
||||
|
||||
DECLARE_EVENT_CLASS(smb3_reconnect_class,
|
||||
TP_PROTO(__u64 currmid,
|
||||
char *hostname),
|
||||
|
Loading…
Reference in New Issue
Block a user