]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
smb: client: add oplock level to smb3_open_done tracepoint
authorBharath SM <bharathsm@microsoft.com>
Tue, 14 Apr 2026 16:18:04 +0000 (21:48 +0530)
committerSteve French <stfrench@microsoft.com>
Tue, 14 Apr 2026 18:04:21 +0000 (13:04 -0500)
Add an oplock field to the smb3_open_done_class trace event to
show the granted oplock/lease level. Move the trace_smb3_open_done
call after smb2_parse_contexts() so the oplock value reflects
the parsed lease state (R/W/H flags).

Signed-off-by: Bharath SM <bharathsm@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/smb2pdu.c
fs/smb/client/trace.h

index 61bae531959a491baacdd6a95e24b3386c4d9161..96140f6d30b56407b3d6245ef7bac5e0a8d7fddf 100644 (file)
@@ -3044,7 +3044,8 @@ replay_again:
        }
 
        trace_smb3_posix_mkdir_done(xid, rsp->PersistentFileId, tcon->tid, ses->Suid,
-                                   CREATE_NOT_FILE, FILE_WRITE_ATTRIBUTES);
+                                   CREATE_NOT_FILE, FILE_WRITE_ATTRIBUTES,
+                                   rsp->OplockLevel);
 
        SMB2_close(xid, tcon, rsp->PersistentFileId, rsp->VolatileFileId);
 
@@ -3321,9 +3322,6 @@ replay_again:
                goto creat_exit;
        } else if (rsp == NULL) /* unlikely to happen, but safer to check */
                goto creat_exit;
-       else
-               trace_smb3_open_done(xid, rsp->PersistentFileId, tcon->tid, ses->Suid,
-                                    oparms->create_options, oparms->desired_access);
 
        atomic_inc(&tcon->num_remote_opens);
        oparms->fid->persistent_fid = rsp->PersistentFileId;
@@ -3348,6 +3346,10 @@ replay_again:
 
        rc = smb2_parse_contexts(server, &rsp_iov, &oparms->fid->epoch,
                                 oparms->fid->lease_key, oplock, buf, posix);
+
+       trace_smb3_open_done(xid, rsp->PersistentFileId, tcon->tid, ses->Suid,
+                            oparms->create_options, oparms->desired_access,
+                            *oplock);
 creat_exit:
        SMB2_open_free(&rqst);
        free_rsp_buf(resp_buftype, rsp);
index cb5ce1316eba6bef15dc78512f507f0db92d557e..57abf5fca26c6bc352dd30725881ef5c6f92e02b 100644 (file)
@@ -1321,8 +1321,9 @@ DECLARE_EVENT_CLASS(smb3_open_done_class,
                __u32   tid,
                __u64   sesid,
                int     create_options,
-               int     desired_access),
-       TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
+               int     desired_access,
+               __u8    oplock),
+       TP_ARGS(xid, fid, tid, sesid, create_options, desired_access, oplock),
        TP_STRUCT__entry(
                __field(unsigned int, xid)
                __field(__u64, fid)
@@ -1330,6 +1331,7 @@ DECLARE_EVENT_CLASS(smb3_open_done_class,
                __field(__u64, sesid)
                __field(int, create_options)
                __field(int, desired_access)
+               __field(__u8, oplock)
        ),
        TP_fast_assign(
                __entry->xid = xid;
@@ -1338,10 +1340,11 @@ DECLARE_EVENT_CLASS(smb3_open_done_class,
                __entry->sesid = sesid;
                __entry->create_options = create_options;
                __entry->desired_access = desired_access;
+               __entry->oplock = oplock;
        ),
-       TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
+       TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x oplock=0x%x",
                __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
-               __entry->create_options, __entry->desired_access)
+               __entry->create_options, __entry->desired_access, __entry->oplock)
 )
 
 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
@@ -1351,8 +1354,9 @@ DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
                __u32   tid,                    \
                __u64   sesid,                  \
                int     create_options,         \
-               int     desired_access),        \
-       TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
+               int     desired_access,         \
+               __u8    oplock),                \
+       TP_ARGS(xid, fid, tid, sesid, create_options, desired_access, oplock))
 
 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);