Here is a minor patch to add the missing tracepoint (see attached). Let me know if any thoughts, or other obviousb missing tracepoints smb3: add missing tracepoint for querying wsl EAs We had tracepoints for the return code for querying WSL EAs (trace_smb3_query_wsl_ea_compound_err and trace_smb3_query_wsl_ea_compound_done) but were missing one for trace_smb3_query_wsl_ea_compound_enter. Fixes: ea41367b2a60 ("smb: client: introduce SMB2_OP_QUERY_WSL_EA") On Sat, Jan 18, 2025 at 10:38 PM Steve French <smfrench@xxxxxxxxx> wrote: > > Good catch. > > Looking at your patch, I noticed one trace point was missing from the > original patch: > > trace_smb3_query_wsl_ea_compound_enter > > commit ea41367b2a602f602ea6594fc4a310520dcc64f4 > Author: Paulo Alcantara <pc@xxxxxxxxxxxxx> > Date: Sun Jan 28 01:12:01 2024 -0300 > > smb: client: introduce SMB2_OP_QUERY_WSL_EA > > On Sat, Jan 18, 2025 at 2:04 PM Ruben Devos <devosruben6@xxxxxxxxx> wrote: > > > > The tracepoints based on smb3_inf_compound_*_class have tcon id and > > session id swapped around. This results in incorrect output in > > `trace-cmd report`. > > > > Fix the order of arguments to resolve this issue. The trace-cmd output > > below shows the before and after of the smb3_delete_enter and > > smb3_delete_done events as an example. The smb3_cmd_* events show the > > correct session and tcon id for reference. > > > > Also fix tracepoint set -> get in the SMB2_OP_GET_REPARSE case. > > > > BEFORE: > > rm-2211 [001] ..... 1839.550888: smb3_delete_enter: xid=281 sid=0x5 tid=0x3d path=\hello2.txt > > rm-2211 [001] ..... 1839.550894: smb3_cmd_enter: sid=0x1ac000000003d tid=0x5 cmd=5 mid=61 > > rm-2211 [001] ..... 1839.550896: smb3_cmd_enter: sid=0x1ac000000003d tid=0x5 cmd=6 mid=62 > > rm-2211 [001] ..... 1839.552091: smb3_cmd_done: sid=0x1ac000000003d tid=0x5 cmd=5 mid=61 > > rm-2211 [001] ..... 1839.552093: smb3_cmd_done: sid=0x1ac000000003d tid=0x5 cmd=6 mid=62 > > rm-2211 [001] ..... 1839.552103: smb3_delete_done: xid=281 sid=0x5 tid=0x3d > > > > AFTER: > > rm-2501 [001] ..... 3237.656110: smb3_delete_enter: xid=88 sid=0x1ac0000000041 tid=0x5 path=\hello2.txt > > rm-2501 [001] ..... 3237.656122: smb3_cmd_enter: sid=0x1ac0000000041 tid=0x5 cmd=5 mid=84 > > rm-2501 [001] ..... 3237.656123: smb3_cmd_enter: sid=0x1ac0000000041 tid=0x5 cmd=6 mid=85 > > rm-2501 [001] ..... 3237.657909: smb3_cmd_done: sid=0x1ac0000000041 tid=0x5 cmd=5 mid=84 > > rm-2501 [001] ..... 3237.657909: smb3_cmd_done: sid=0x1ac0000000041 tid=0x5 cmd=6 mid=85 > > rm-2501 [001] ..... 3237.657922: smb3_delete_done: xid=88 sid=0x1ac0000000041 tid=0x5 > > > > Signed-off-by: Ruben Devos <devosruben6@xxxxxxxxx> > > --- > > fs/smb/client/dir.c | 6 +-- > > fs/smb/client/smb2inode.c | 108 +++++++++++++++++++------------------- > > 2 files changed, 57 insertions(+), 57 deletions(-) > > > > diff --git a/fs/smb/client/dir.c b/fs/smb/client/dir.c > > index 864b194dbaa0..1822493dd084 100644 > > --- a/fs/smb/client/dir.c > > +++ b/fs/smb/client/dir.c > > @@ -627,7 +627,7 @@ int cifs_mknod(struct mnt_idmap *idmap, struct inode *inode, > > goto mknod_out; > > } > > > > - trace_smb3_mknod_enter(xid, tcon->ses->Suid, tcon->tid, full_path); > > + trace_smb3_mknod_enter(xid, tcon->tid, tcon->ses->Suid, full_path); > > > > rc = tcon->ses->server->ops->make_node(xid, inode, direntry, tcon, > > full_path, mode, > > @@ -635,9 +635,9 @@ int cifs_mknod(struct mnt_idmap *idmap, struct inode *inode, > > > > mknod_out: > > if (rc) > > - trace_smb3_mknod_err(xid, tcon->ses->Suid, tcon->tid, rc); > > + trace_smb3_mknod_err(xid, tcon->tid, tcon->ses->Suid, rc); > > else > > - trace_smb3_mknod_done(xid, tcon->ses->Suid, tcon->tid); > > + trace_smb3_mknod_done(xid, tcon->tid, tcon->ses->Suid); > > > > free_dentry_path(page); > > free_xid(xid); > > diff --git a/fs/smb/client/smb2inode.c b/fs/smb/client/smb2inode.c > > index a55f0044d30b..274672755c19 100644 > > --- a/fs/smb/client/smb2inode.c > > +++ b/fs/smb/client/smb2inode.c > > @@ -298,8 +298,8 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_query_info_compound_enter(xid, ses->Suid, > > - tcon->tid, full_path); > > + trace_smb3_query_info_compound_enter(xid, tcon->tid, > > + ses->Suid, full_path); > > break; > > case SMB2_OP_POSIX_QUERY_INFO: > > rqst[num_rqst].rq_iov = &vars->qi_iov; > > @@ -334,18 +334,18 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_posix_query_info_compound_enter(xid, ses->Suid, > > - tcon->tid, full_path); > > + trace_smb3_posix_query_info_compound_enter(xid, tcon->tid, > > + ses->Suid, full_path); > > break; > > case SMB2_OP_DELETE: > > - trace_smb3_delete_enter(xid, ses->Suid, tcon->tid, full_path); > > + trace_smb3_delete_enter(xid, tcon->tid, ses->Suid, full_path); > > break; > > case SMB2_OP_MKDIR: > > /* > > * Directories are created through parameters in the > > * SMB2_open() call. > > */ > > - trace_smb3_mkdir_enter(xid, ses->Suid, tcon->tid, full_path); > > + trace_smb3_mkdir_enter(xid, tcon->tid, ses->Suid, full_path); > > break; > > case SMB2_OP_RMDIR: > > rqst[num_rqst].rq_iov = &vars->si_iov[0]; > > @@ -363,7 +363,7 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > smb2_set_next_command(tcon, &rqst[num_rqst]); > > smb2_set_related(&rqst[num_rqst++]); > > - trace_smb3_rmdir_enter(xid, ses->Suid, tcon->tid, full_path); > > + trace_smb3_rmdir_enter(xid, tcon->tid, ses->Suid, full_path); > > break; > > case SMB2_OP_SET_EOF: > > rqst[num_rqst].rq_iov = &vars->si_iov[0]; > > @@ -398,7 +398,7 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_set_eof_enter(xid, ses->Suid, tcon->tid, full_path); > > + trace_smb3_set_eof_enter(xid, tcon->tid, ses->Suid, full_path); > > break; > > case SMB2_OP_SET_INFO: > > rqst[num_rqst].rq_iov = &vars->si_iov[0]; > > @@ -429,8 +429,8 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_set_info_compound_enter(xid, ses->Suid, > > - tcon->tid, full_path); > > + trace_smb3_set_info_compound_enter(xid, tcon->tid, > > + ses->Suid, full_path); > > break; > > case SMB2_OP_RENAME: > > rqst[num_rqst].rq_iov = &vars->si_iov[0]; > > @@ -469,7 +469,7 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_rename_enter(xid, ses->Suid, tcon->tid, full_path); > > + trace_smb3_rename_enter(xid, tcon->tid, ses->Suid, full_path); > > break; > > case SMB2_OP_HARDLINK: > > rqst[num_rqst].rq_iov = &vars->si_iov[0]; > > @@ -496,7 +496,7 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > smb2_set_next_command(tcon, &rqst[num_rqst]); > > smb2_set_related(&rqst[num_rqst++]); > > - trace_smb3_hardlink_enter(xid, ses->Suid, tcon->tid, full_path); > > + trace_smb3_hardlink_enter(xid, tcon->tid, ses->Suid, full_path); > > break; > > case SMB2_OP_SET_REPARSE: > > rqst[num_rqst].rq_iov = vars->io_iov; > > @@ -523,8 +523,8 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_set_reparse_compound_enter(xid, ses->Suid, > > - tcon->tid, full_path); > > + trace_smb3_set_reparse_compound_enter(xid, tcon->tid, > > + ses->Suid, full_path); > > break; > > case SMB2_OP_GET_REPARSE: > > rqst[num_rqst].rq_iov = vars->io_iov; > > @@ -549,8 +549,8 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > goto finished; > > } > > num_rqst++; > > - trace_smb3_get_reparse_compound_enter(xid, ses->Suid, > > - tcon->tid, full_path); > > + trace_smb3_get_reparse_compound_enter(xid, tcon->tid, > > + ses->Suid, full_path); > > break; > > case SMB2_OP_QUERY_WSL_EA: > > rqst[num_rqst].rq_iov = &vars->ea_iov; > > @@ -656,11 +656,11 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > } > > SMB2_query_info_free(&rqst[num_rqst++]); > > if (rc) > > - trace_smb3_query_info_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_query_info_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > else > > - trace_smb3_query_info_compound_done(xid, ses->Suid, > > - tcon->tid); > > + trace_smb3_query_info_compound_done(xid, tcon->tid, > > + ses->Suid); > > break; > > case SMB2_OP_POSIX_QUERY_INFO: > > idata = in_iov[i].iov_base; > > @@ -683,15 +683,15 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > > > SMB2_query_info_free(&rqst[num_rqst++]); > > if (rc) > > - trace_smb3_posix_query_info_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_posix_query_info_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > else > > - trace_smb3_posix_query_info_compound_done(xid, ses->Suid, > > - tcon->tid); > > + trace_smb3_posix_query_info_compound_done(xid, tcon->tid, > > + ses->Suid); > > break; > > case SMB2_OP_DELETE: > > if (rc) > > - trace_smb3_delete_err(xid, ses->Suid, tcon->tid, rc); > > + trace_smb3_delete_err(xid, tcon->tid, ses->Suid, rc); > > else { > > /* > > * If dentry (hence, inode) is NULL, lease break is going to > > @@ -699,59 +699,59 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > */ > > if (inode) > > cifs_mark_open_handles_for_deleted_file(inode, full_path); > > - trace_smb3_delete_done(xid, ses->Suid, tcon->tid); > > + trace_smb3_delete_done(xid, tcon->tid, ses->Suid); > > } > > break; > > case SMB2_OP_MKDIR: > > if (rc) > > - trace_smb3_mkdir_err(xid, ses->Suid, tcon->tid, rc); > > + trace_smb3_mkdir_err(xid, tcon->tid, ses->Suid, rc); > > else > > - trace_smb3_mkdir_done(xid, ses->Suid, tcon->tid); > > + trace_smb3_mkdir_done(xid, tcon->tid, ses->Suid); > > break; > > case SMB2_OP_HARDLINK: > > if (rc) > > - trace_smb3_hardlink_err(xid, ses->Suid, tcon->tid, rc); > > + trace_smb3_hardlink_err(xid, tcon->tid, ses->Suid, rc); > > else > > - trace_smb3_hardlink_done(xid, ses->Suid, tcon->tid); > > + trace_smb3_hardlink_done(xid, tcon->tid, ses->Suid); > > SMB2_set_info_free(&rqst[num_rqst++]); > > break; > > case SMB2_OP_RENAME: > > if (rc) > > - trace_smb3_rename_err(xid, ses->Suid, tcon->tid, rc); > > + trace_smb3_rename_err(xid, tcon->tid, ses->Suid, rc); > > else > > - trace_smb3_rename_done(xid, ses->Suid, tcon->tid); > > + trace_smb3_rename_done(xid, tcon->tid, ses->Suid); > > SMB2_set_info_free(&rqst[num_rqst++]); > > break; > > case SMB2_OP_RMDIR: > > if (rc) > > - trace_smb3_rmdir_err(xid, ses->Suid, tcon->tid, rc); > > + trace_smb3_rmdir_err(xid, tcon->tid, ses->Suid, rc); > > else > > - trace_smb3_rmdir_done(xid, ses->Suid, tcon->tid); > > + trace_smb3_rmdir_done(xid, tcon->tid, ses->Suid); > > SMB2_set_info_free(&rqst[num_rqst++]); > > break; > > case SMB2_OP_SET_EOF: > > if (rc) > > - trace_smb3_set_eof_err(xid, ses->Suid, tcon->tid, rc); > > + trace_smb3_set_eof_err(xid, tcon->tid, ses->Suid, rc); > > else > > - trace_smb3_set_eof_done(xid, ses->Suid, tcon->tid); > > + trace_smb3_set_eof_done(xid, tcon->tid, ses->Suid); > > SMB2_set_info_free(&rqst[num_rqst++]); > > break; > > case SMB2_OP_SET_INFO: > > if (rc) > > - trace_smb3_set_info_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_set_info_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > else > > - trace_smb3_set_info_compound_done(xid, ses->Suid, > > - tcon->tid); > > + trace_smb3_set_info_compound_done(xid, tcon->tid, > > + ses->Suid); > > SMB2_set_info_free(&rqst[num_rqst++]); > > break; > > case SMB2_OP_SET_REPARSE: > > if (rc) { > > - trace_smb3_set_reparse_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_set_reparse_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > } else { > > - trace_smb3_set_reparse_compound_done(xid, ses->Suid, > > - tcon->tid); > > + trace_smb3_set_reparse_compound_done(xid, tcon->tid, > > + ses->Suid); > > } > > SMB2_ioctl_free(&rqst[num_rqst++]); > > break; > > @@ -764,18 +764,18 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > rbuf = reparse_buf_ptr(iov); > > if (IS_ERR(rbuf)) { > > rc = PTR_ERR(rbuf); > > - trace_smb3_set_reparse_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_get_reparse_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > } else { > > idata->reparse.tag = le32_to_cpu(rbuf->ReparseTag); > > - trace_smb3_set_reparse_compound_done(xid, ses->Suid, > > - tcon->tid); > > + trace_smb3_get_reparse_compound_done(xid, tcon->tid, > > + ses->Suid); > > } > > memset(iov, 0, sizeof(*iov)); > > resp_buftype[i + 1] = CIFS_NO_BUFFER; > > } else { > > - trace_smb3_set_reparse_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_get_reparse_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > } > > SMB2_ioctl_free(&rqst[num_rqst++]); > > break; > > @@ -792,11 +792,11 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, > > } > > } > > if (!rc) { > > - trace_smb3_query_wsl_ea_compound_done(xid, ses->Suid, > > - tcon->tid); > > + trace_smb3_query_wsl_ea_compound_done(xid, tcon->tid, > > + ses->Suid); > > } else { > > - trace_smb3_query_wsl_ea_compound_err(xid, ses->Suid, > > - tcon->tid, rc); > > + trace_smb3_query_wsl_ea_compound_err(xid, tcon->tid, > > + ses->Suid, rc); > > } > > SMB2_query_info_free(&rqst[num_rqst++]); > > break; > > -- > > 2.48.1 > > > > > > > -- > Thanks, > > Steve -- Thanks, Steve
From 73a62be25e143be534a1f9027387f608b0b9dc1e Mon Sep 17 00:00:00 2001 From: Steve French <stfrench@xxxxxxxxxxxxx> Date: Sun, 19 Jan 2025 01:02:06 -0600 Subject: [PATCH] smb3: add missing tracepoint for querying wsl EAs We had tracepoints for the return code for querying WSL EAs (trace_smb3_query_wsl_ea_compound_err and trace_smb3_query_wsl_ea_compound_done) but were missing one for trace_smb3_query_wsl_ea_compound_enter. Fixes: ea41367b2a60 ("smb: client: introduce SMB2_OP_QUERY_WSL_EA") Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx> --- fs/smb/client/smb2inode.c | 2 ++ fs/smb/client/trace.h | 1 + 2 files changed, 3 insertions(+) diff --git a/fs/smb/client/smb2inode.c b/fs/smb/client/smb2inode.c index 274672755c19..7d3685dd655a 100644 --- a/fs/smb/client/smb2inode.c +++ b/fs/smb/client/smb2inode.c @@ -584,6 +584,8 @@ static int smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon, goto finished; } num_rqst++; + trace_smb3_query_wsl_ea_compound_enter(xid, tcon->tid, + ses->Suid, full_path); break; default: cifs_dbg(VFS, "Invalid command\n"); diff --git a/fs/smb/client/trace.h b/fs/smb/client/trace.h index 12cbd3428a6d..52bcb55d9952 100644 --- a/fs/smb/client/trace.h +++ b/fs/smb/client/trace.h @@ -674,6 +674,7 @@ DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter); DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter); +DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_wsl_ea_compound_enter); DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter); -- 2.43.0