[RFC PATCH 22/36] cifs: Trace smb1/2_copy_to_prepped_buffers()

David Howells <[email protected]> Tue, 19 May 2026 11:21:40 +0100
Newsgroups dev.linux.lists.netfs,org.kernel.vger.linux-cifs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Add a tracepoint to smb1/2_copy_to_prepped_buffers() so that bulk data
read (such as a Read op) can be checked.

Signed-off-by: David Howells <[email protected]>
cc: Steve French <[email protected]>
cc: Paulo Alcantara <[email protected]>
cc: Shyam Prasad N <[email protected]>
cc: [email protected]
cc: [email protected]
cc: [email protected]
---
 fs/smb/client/smb1transport.c |  1 +
 fs/smb/client/smb2transport.c |  1 +
 fs/smb/client/trace.h         | 21 +++++++++++++++++++++
 3 files changed, 23 insertions(+)

diff --git a/fs/smb/client/smb1transport.c b/fs/smb/client/smb1transport.c
index ba887284fadd..598579b564ae 100644
--- a/fs/smb/client/smb1transport.c
+++ b/fs/smb/client/smb1transport.c
@@ -829,6 +829,7 @@ static void smb1_copy_to_prepped_buffers(struct TCP_Server_Info *server,
 		return;
 	}
 
+	trace_smb3_copy_to_buf(smb, &dest, skip, to_copy);
 	if (!rxq->refillable) {
 		size_t got;
 
diff --git a/fs/smb/client/smb2transport.c b/fs/smb/client/smb2transport.c
index 404bb8b1b3c3..73db90ab8a52 100644
--- a/fs/smb/client/smb2transport.c
+++ b/fs/smb/client/smb2transport.c
@@ -1236,6 +1236,7 @@ static void smb2_copy_to_prepped_buffers(struct TCP_Server_Info *server,
 		return;
 	}
 
+	trace_smb3_copy_to_buf(smb, &dest, skip, to_copy);
 	if (!rxq->refillable) {
 		size_t got;
 
diff --git a/fs/smb/client/trace.h b/fs/smb/client/trace.h
index 2cdbd8249af0..e9abcc5cf83a 100644
--- a/fs/smb/client/trace.h
+++ b/fs/smb/client/trace.h
@@ -2117,6 +2117,27 @@ TRACE_EVENT(smb3_message,
 		      __entry->ref)
 	    );
 
+TRACE_EVENT(smb3_copy_to_buf,
+	    TP_PROTO(const struct smb_message *smb, const struct iov_iter *dest,
+		     unsigned int msg_offset, unsigned int len),
+	    TP_ARGS(smb, dest, msg_offset, len),
+	    TP_STRUCT__entry(
+		    __field(unsigned int,	smb_message)
+		    __field(unsigned int,	dest_len)
+		    __field(unsigned int,	msg_offset)
+		    __field(unsigned int,	len)
+			     ),
+	    TP_fast_assign(
+		    __entry->smb_message = smb->debug_id;
+		    __entry->dest_len	= iov_iter_count(dest);
+		    __entry->msg_offset	= msg_offset;
+		    __entry->len	= len;
+			   ),
+	    TP_printk("MSG=%08x m=%x sl=%x dl=%x",
+		      __entry->smb_message,
+		      __entry->msg_offset, __entry->len, __entry->dest_len)
+	    );
+
 #undef EM
 #undef E_
 #endif /* _CIFS_TRACE_H */