Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

smb: client: add new tracepoint to trace lease break notification

Add smb3_lease_break_enter to trace lease break notifications,
recording lease state, flags, epoch, and lease key. Align
smb3_lease_not_found to use the same payload and print format.

Signed-off-by: Bharath SM <bharathsm@microsoft.com>
Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
Signed-off-by: Steve French <stfrench@microsoft.com>

authored by

Bharath SM and committed by
Steve French
72595cb6 0c3813d8

+66 -9
+15 -4
fs/smb/client/smb2misc.c
··· 614 614 struct cifs_tcon *tcon; 615 615 struct cifs_pending_open *open; 616 616 617 + /* Trace receipt of lease break request from server */ 618 + trace_smb3_lease_break_enter(le32_to_cpu(rsp->CurrentLeaseState), 619 + le32_to_cpu(rsp->Flags), 620 + le16_to_cpu(rsp->Epoch), 621 + le32_to_cpu(rsp->hdr.Id.SyncId.TreeId), 622 + le64_to_cpu(rsp->hdr.SessionId), 623 + *((u64 *)rsp->LeaseKey), 624 + *((u64 *)&rsp->LeaseKey[8])); 625 + 617 626 cifs_dbg(FYI, "Checking for lease break\n"); 618 627 619 628 /* If server is a channel, select the primary channel */ ··· 669 660 spin_unlock(&cifs_tcp_ses_lock); 670 661 cifs_dbg(FYI, "Can not process lease break - no lease matched\n"); 671 662 trace_smb3_lease_not_found(le32_to_cpu(rsp->CurrentLeaseState), 672 - le32_to_cpu(rsp->hdr.Id.SyncId.TreeId), 673 - le64_to_cpu(rsp->hdr.SessionId), 674 - *((u64 *)rsp->LeaseKey), 675 - *((u64 *)&rsp->LeaseKey[8])); 663 + le32_to_cpu(rsp->Flags), 664 + le16_to_cpu(rsp->Epoch), 665 + le32_to_cpu(rsp->hdr.Id.SyncId.TreeId), 666 + le64_to_cpu(rsp->hdr.SessionId), 667 + *((u64 *)rsp->LeaseKey), 668 + *((u64 *)&rsp->LeaseKey[8])); 676 669 677 670 return false; 678 671 }
+2 -2
fs/smb/client/smb2pdu.c
··· 6192 6192 please_key_high = (__u64 *)(lease_key+8); 6193 6193 if (rc) { 6194 6194 cifs_stats_fail_inc(tcon, SMB2_OPLOCK_BREAK_HE); 6195 - trace_smb3_lease_err(le32_to_cpu(lease_state), tcon->tid, 6195 + trace_smb3_lease_ack_err(le32_to_cpu(lease_state), tcon->tid, 6196 6196 ses->Suid, *please_key_low, *please_key_high, rc); 6197 6197 cifs_dbg(FYI, "Send error in Lease Break = %d\n", rc); 6198 6198 } else 6199 - trace_smb3_lease_done(le32_to_cpu(lease_state), tcon->tid, 6199 + trace_smb3_lease_ack_done(le32_to_cpu(lease_state), tcon->tid, 6200 6200 ses->Suid, *please_key_low, *please_key_high); 6201 6201 6202 6202 return rc;
+49 -3
fs/smb/client/trace.h
··· 1171 1171 __u64 lease_key_high), \ 1172 1172 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 1173 1173 1174 - DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 1175 - DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found); 1174 + DEFINE_SMB3_LEASE_DONE_EVENT(lease_ack_done); 1175 + /* Tracepoint when a lease break request is received/entered (includes epoch and flags) */ 1176 + DECLARE_EVENT_CLASS(smb3_lease_enter_class, 1177 + TP_PROTO(__u32 lease_state, 1178 + __u32 flags, 1179 + __u16 epoch, 1180 + __u32 tid, 1181 + __u64 sesid, 1182 + __u64 lease_key_low, 1183 + __u64 lease_key_high), 1184 + TP_ARGS(lease_state, flags, epoch, tid, sesid, lease_key_low, lease_key_high), 1185 + TP_STRUCT__entry( 1186 + __field(__u32, lease_state) 1187 + __field(__u32, flags) 1188 + __field(__u16, epoch) 1189 + __field(__u32, tid) 1190 + __field(__u64, sesid) 1191 + __field(__u64, lease_key_low) 1192 + __field(__u64, lease_key_high) 1193 + ), 1194 + TP_fast_assign( 1195 + __entry->lease_state = lease_state; 1196 + __entry->flags = flags; 1197 + __entry->epoch = epoch; 1198 + __entry->tid = tid; 1199 + __entry->sesid = sesid; 1200 + __entry->lease_key_low = lease_key_low; 1201 + __entry->lease_key_high = lease_key_high; 1202 + ), 1203 + TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x flags=0x%x epoch=%u", 1204 + __entry->sesid, __entry->tid, __entry->lease_key_high, 1205 + __entry->lease_key_low, __entry->lease_state, __entry->flags, __entry->epoch) 1206 + ) 1207 + 1208 + #define DEFINE_SMB3_LEASE_ENTER_EVENT(name) \ 1209 + DEFINE_EVENT(smb3_lease_enter_class, smb3_##name, \ 1210 + TP_PROTO(__u32 lease_state, \ 1211 + __u32 flags, \ 1212 + __u16 epoch, \ 1213 + __u32 tid, \ 1214 + __u64 sesid, \ 1215 + __u64 lease_key_low, \ 1216 + __u64 lease_key_high), \ 1217 + TP_ARGS(lease_state, flags, epoch, tid, sesid, lease_key_low, lease_key_high)) 1218 + 1219 + DEFINE_SMB3_LEASE_ENTER_EVENT(lease_break_enter); 1220 + /* Lease not found: reuse lease_enter payload (includes epoch and flags) */ 1221 + DEFINE_SMB3_LEASE_ENTER_EVENT(lease_not_found); 1176 1222 1177 1223 DECLARE_EVENT_CLASS(smb3_lease_err_class, 1178 1224 TP_PROTO(__u32 lease_state, ··· 1259 1213 int rc), \ 1260 1214 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 1261 1215 1262 - DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 1216 + DEFINE_SMB3_LEASE_ERR_EVENT(lease_ack_err); 1263 1217 1264 1218 DECLARE_EVENT_CLASS(smb3_connect_class, 1265 1219 TP_PROTO(char *hostname,