[PATCH] cifs: Make the write_{enter,done,err} tracepoints display netfs info

David Howells posted 1 patch 2 months, 1 week ago
fs/smb/client/smb2pdu.c |   22 +++++++++++++++-------
fs/smb/client/trace.h   |    6 +++---
2 files changed, 18 insertions(+), 10 deletions(-)
[PATCH] cifs: Make the write_{enter,done,err} tracepoints display netfs info
Posted by David Howells 2 months, 1 week ago
Make the write RPC tracepoints use the same trace macro complexes as the
read tracepoints and display the netfs request and subrequest IDs where
available (see commit 519be989717c "cifs: Add a tracepoint to track credits
involved in R/W requests").

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Steve French <stfrench@microsoft.com>
cc: Paulo Alcantara (Red Hat) <pc@manguebit.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
---
 fs/smb/client/smb2pdu.c |   22 +++++++++++++++-------
 fs/smb/client/trace.h   |    6 +++---
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
index bb8ecbbe78af..6544deac8069 100644
--- a/fs/smb/client/smb2pdu.c
+++ b/fs/smb/client/smb2pdu.c
@@ -4865,7 +4865,9 @@ smb2_writev_callback(struct mid_q_entry *mid)
 #endif
 	if (result) {
 		cifs_stats_fail_inc(tcon, SMB2_WRITE_HE);
-		trace_smb3_write_err(wdata->xid,
+		trace_smb3_write_err(wdata->rreq->debug_id,
+				     wdata->subreq.debug_index,
+				     wdata->xid,
 				     wdata->req->cfile->fid.persistent_fid,
 				     tcon->tid, tcon->ses->Suid, wdata->subreq.start,
 				     wdata->subreq.len, wdata->result);
@@ -4873,7 +4875,9 @@ smb2_writev_callback(struct mid_q_entry *mid)
 			pr_warn_once("Out of space writing to %s\n",
 				     tcon->tree_name);
 	} else
-		trace_smb3_write_done(0 /* no xid */,
+		trace_smb3_write_done(wdata->rreq->debug_id,
+				      wdata->subreq.debug_index,
+				      wdata->xid,
 				      wdata->req->cfile->fid.persistent_fid,
 				      tcon->tid, tcon->ses->Suid,
 				      wdata->subreq.start, wdata->subreq.len);
@@ -4951,7 +4955,9 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
 				offsetof(struct smb2_write_req, Buffer));
 	req->RemainingBytes = 0;
 
-	trace_smb3_write_enter(wdata->xid,
+	trace_smb3_write_enter(wdata->rreq->debug_id,
+			       wdata->subreq.debug_index,
+			       wdata->xid,
 			       io_parms->persistent_fid,
 			       io_parms->tcon->tid,
 			       io_parms->tcon->ses->Suid,
@@ -5027,7 +5033,9 @@ smb2_async_writev(struct cifs_io_subrequest *wdata)
 			     wdata, flags, &wdata->credits);
 	/* Can't touch wdata if rc == 0 */
 	if (rc) {
-		trace_smb3_write_err(xid,
+		trace_smb3_write_err(wdata->rreq->debug_id,
+				     wdata->subreq.debug_index,
+				     xid,
 				     io_parms->persistent_fid,
 				     io_parms->tcon->tid,
 				     io_parms->tcon->ses->Suid,
@@ -5107,7 +5115,7 @@ SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms,
 				offsetof(struct smb2_write_req, Buffer));
 	req->RemainingBytes = 0;
 
-	trace_smb3_write_enter(xid, io_parms->persistent_fid,
+	trace_smb3_write_enter(0, 0, xid, io_parms->persistent_fid,
 		io_parms->tcon->tid, io_parms->tcon->ses->Suid,
 		io_parms->offset, io_parms->length);
 
@@ -5128,7 +5136,7 @@ SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms,
 	rsp = (struct smb2_write_rsp *)rsp_iov.iov_base;
 
 	if (rc) {
-		trace_smb3_write_err(xid,
+		trace_smb3_write_err(0, 0, xid,
 				     req->PersistentFileId,
 				     io_parms->tcon->tid,
 				     io_parms->tcon->ses->Suid,
@@ -5137,7 +5145,7 @@ SMB2_write(const unsigned int xid, struct cifs_io_parms *io_parms,
 		cifs_dbg(VFS, "Send error in write = %d\n", rc);
 	} else {
 		*nbytes = le32_to_cpu(rsp->DataLength);
-		trace_smb3_write_done(xid,
+		trace_smb3_write_done(0, 0, xid,
 				      req->PersistentFileId,
 				      io_parms->tcon->tid,
 				      io_parms->tcon->ses->Suid,
diff --git a/fs/smb/client/trace.h b/fs/smb/client/trace.h
index 8e9964001e2a..0b52d22a91a0 100644
--- a/fs/smb/client/trace.h
+++ b/fs/smb/client/trace.h
@@ -157,6 +157,7 @@ DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
 	TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc))
 
 DEFINE_SMB3_RW_ERR_EVENT(read_err);
+DEFINE_SMB3_RW_ERR_EVENT(write_err);
 
 /* For logging errors in other file I/O ops */
 DECLARE_EVENT_CLASS(smb3_other_err_class,
@@ -202,7 +203,6 @@ DEFINE_EVENT(smb3_other_err_class, smb3_##name, \
 		int	rc),			\
 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
 
-DEFINE_SMB3_OTHER_ERR_EVENT(write_err);
 DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err);
 DEFINE_SMB3_OTHER_ERR_EVENT(zero_err);
 DEFINE_SMB3_OTHER_ERR_EVENT(falloc_err);
@@ -370,6 +370,8 @@ DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
 
 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
 DEFINE_SMB3_RW_DONE_EVENT(read_done);
+DEFINE_SMB3_RW_DONE_EVENT(write_enter);
+DEFINE_SMB3_RW_DONE_EVENT(write_done);
 
 /* For logging successful other op */
 DECLARE_EVENT_CLASS(smb3_other_done_class,
@@ -411,11 +413,9 @@ DEFINE_EVENT(smb3_other_done_class, smb3_##name,   \
 		__u32	len),			\
 	TP_ARGS(xid, fid, tid, sesid, offset, len))
 
-DEFINE_SMB3_OTHER_DONE_EVENT(write_enter);
 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_enter);
 DEFINE_SMB3_OTHER_DONE_EVENT(zero_enter);
 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_enter);
-DEFINE_SMB3_OTHER_DONE_EVENT(write_done);
 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_done);
 DEFINE_SMB3_OTHER_DONE_EVENT(zero_done);
 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_done);
Re: [PATCH] cifs: Make the write_{enter,done,err} tracepoints display netfs info
Posted by Paulo Alcantara 2 months, 1 week ago
David Howells <dhowells@redhat.com> writes:

> Make the write RPC tracepoints use the same trace macro complexes as the
> read tracepoints and display the netfs request and subrequest IDs where
> available (see commit 519be989717c "cifs: Add a tracepoint to track credits
> involved in R/W requests").
>
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Steve French <stfrench@microsoft.com>
> cc: Paulo Alcantara (Red Hat) <pc@manguebit.com>
> cc: Jeff Layton <jlayton@kernel.org>
> cc: linux-cifs@vger.kernel.org
> cc: netfs@lists.linux.dev
> cc: linux-fsdevel@vger.kernel.org
> ---
>  fs/smb/client/smb2pdu.c |   22 +++++++++++++++-------
>  fs/smb/client/trace.h   |    6 +++---
>  2 files changed, 18 insertions(+), 10 deletions(-)

Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Re: [PATCH] cifs: Make the write_{enter,done,err} tracepoints display netfs info
Posted by Steve French 2 months ago
added to cifs-2.6.git for-next since it is important as it fixes a
regression affecting cifs.ko

On Thu, Sep 19, 2024 at 11:01 AM Paulo Alcantara <pc@manguebit.com> wrote:
>
> David Howells <dhowells@redhat.com> writes:
>
> > Make the write RPC tracepoints use the same trace macro complexes as the
> > read tracepoints and display the netfs request and subrequest IDs where
> > available (see commit 519be989717c "cifs: Add a tracepoint to track credits
> > involved in R/W requests").
> >
> > Signed-off-by: David Howells <dhowells@redhat.com>
> > cc: Steve French <stfrench@microsoft.com>
> > cc: Paulo Alcantara (Red Hat) <pc@manguebit.com>
> > cc: Jeff Layton <jlayton@kernel.org>
> > cc: linux-cifs@vger.kernel.org
> > cc: netfs@lists.linux.dev
> > cc: linux-fsdevel@vger.kernel.org
> > ---
> >  fs/smb/client/smb2pdu.c |   22 +++++++++++++++-------
> >  fs/smb/client/trace.h   |    6 +++---
> >  2 files changed, 18 insertions(+), 10 deletions(-)
>
> Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
>


-- 
Thanks,

Steve
Re: [PATCH] cifs: Make the write_{enter,done,err} tracepoints display netfs info
Posted by Steve French 2 months ago
I responded to the wrong email.  This is in cifs-2.6.git for-next, but
it is obviously not a regression, I replied to the wrong email

On Mon, Sep 23, 2024 at 5:20 PM Steve French <smfrench@gmail.com> wrote:
>
> added to cifs-2.6.git for-next since it is important as it fixes a
> regression affecting cifs.ko
>
> On Thu, Sep 19, 2024 at 11:01 AM Paulo Alcantara <pc@manguebit.com> wrote:
> >
> > David Howells <dhowells@redhat.com> writes:
> >
> > > Make the write RPC tracepoints use the same trace macro complexes as the
> > > read tracepoints and display the netfs request and subrequest IDs where
> > > available (see commit 519be989717c "cifs: Add a tracepoint to track credits
> > > involved in R/W requests").
> > >
> > > Signed-off-by: David Howells <dhowells@redhat.com>
> > > cc: Steve French <stfrench@microsoft.com>
> > > cc: Paulo Alcantara (Red Hat) <pc@manguebit.com>
> > > cc: Jeff Layton <jlayton@kernel.org>
> > > cc: linux-cifs@vger.kernel.org
> > > cc: netfs@lists.linux.dev
> > > cc: linux-fsdevel@vger.kernel.org
> > > ---
> > >  fs/smb/client/smb2pdu.c |   22 +++++++++++++++-------
> > >  fs/smb/client/trace.h   |    6 +++---
> > >  2 files changed, 18 insertions(+), 10 deletions(-)
> >
> > Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
> >
>
>
> --
> Thanks,
>
> Steve



-- 
Thanks,

Steve