...and remove the legacy dprintks. Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- fs/nfsd/nfs3proc.c | 8 +++----- fs/nfsd/nfs4proc.c | 3 +++ fs/nfsd/nfsproc.c | 7 +++---- fs/nfsd/trace.h | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index ea1280970ea11b2a82f0de88ad0422eef7063d6d..587fc92597e7c77d078e871b8d12684c6b5efa2d 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -423,6 +423,9 @@ nfsd3_proc_symlink(struct svc_rqst *rqstp) .na_iattr = &argp->attrs, }; + trace_nfsd3_proc_symlink(rqstp, &argp->ffh, argp->fname, argp->flen, + argp->tname, argp->tlen); + if (argp->tlen == 0) { resp->status = nfserr_inval; goto out; @@ -440,11 +443,6 @@ nfsd3_proc_symlink(struct svc_rqst *rqstp) goto out; } - dprintk("nfsd: SYMLINK(3) %s %.*s -> %.*s\n", - SVCFH_fmt(&argp->ffh), - argp->flen, argp->fname, - argp->tlen, argp->tname); - fh_copy(&resp->dirfh, &argp->ffh); fh_init(&resp->fh, NFS3_FHSIZE); resp->status = nfsd_symlink(rqstp, &resp->dirfh, argp->fname, diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 2c795103deaa4044596bd07d90db788169a32a0c..e22596a2e311861be1e4f595d77547be04634ce7 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -873,6 +873,9 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, current->fs->umask = create->cr_umask; switch (create->cr_type) { case NF4LNK: + trace_nfsd4_symlink(rqstp, &cstate->current_fh, + create->cr_name, create->cr_namelen, + create->cr_data, create->cr_datalen); status = nfsd_symlink(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, create->cr_data, &attrs, &resfh); diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 33d8cbf8785588d38d4ec5efd769c1d1d06c6a91..0674ed6b978f6caa1325a9271f2fde9b3ef60945 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -506,6 +506,9 @@ nfsd_proc_symlink(struct svc_rqst *rqstp) }; struct svc_fh newfh; + trace_nfsd_proc_symlink(rqstp, &argp->ffh, argp->fname, argp->flen, + argp->tname, argp->tlen); + if (argp->tlen > NFS_MAXPATHLEN) { resp->status = nfserr_nametoolong; goto out; @@ -519,10 +522,6 @@ nfsd_proc_symlink(struct svc_rqst *rqstp) goto out; } - dprintk("nfsd: SYMLINK %s %.*s -> %.*s\n", - SVCFH_fmt(&argp->ffh), argp->flen, argp->fname, - argp->tlen, argp->tname); - fh_init(&newfh, NFS_FHSIZE); resp->status = nfsd_symlink(rqstp, &argp->ffh, argp->fname, argp->flen, argp->tname, &attrs, &newfh); diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index c6aff23a845f06c87e701d57ec577c2c5c5a743c..850dbf1240b234b67dd7d75d6903c0f49dc01261 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -2430,6 +2430,41 @@ DEFINE_NFSD_VFS_CREATE_EVENT(nfsd3_proc_mknod); DEFINE_NFSD_VFS_CREATE_EVENT(nfsd4_create); DEFINE_NFSD_VFS_CREATE_EVENT(nfsd4_create_file); +DECLARE_EVENT_CLASS(nfsd_vfs_symlink_class, + TP_PROTO(struct svc_rqst *rqstp, + struct svc_fh *fhp, + const char *name, + unsigned int namelen, + const char *tgt, + unsigned int tgtlen), + TP_ARGS(rqstp, fhp, name, namelen, tgt, tgtlen), + TP_STRUCT__entry( + SVC_RQST_ENDPOINT_FIELDS(rqstp) + __field(u32, fh_hash) + __string_len(name, name, namelen) + __string_len(tgt, tgt, tgtlen) + ), + TP_fast_assign( + SVC_RQST_ENDPOINT_ASSIGNMENTS(rqstp); + __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); + __assign_str(name); + __assign_str(tgt); + ), + TP_printk("xid=0x%08x fh_hash=0x%08x name=%s target=%s", + __entry->xid, __entry->fh_hash, + __get_str(name), __get_str(tgt)) +); + +#define DEFINE_NFSD_VFS_SYMLINK_EVENT(__name) \ + DEFINE_EVENT(nfsd_vfs_symlink_class, __name, \ + TP_PROTO(struct svc_rqst *rqstp, struct svc_fh *fhp, \ + const char *name, unsigned int namelen, \ + const char *tgt, unsigned int tgtlen), \ + TP_ARGS(rqstp, fhp, name, namelen, tgt, tgtlen)) + +DEFINE_NFSD_VFS_SYMLINK_EVENT(nfsd_proc_symlink); +DEFINE_NFSD_VFS_SYMLINK_EVENT(nfsd3_proc_symlink); +DEFINE_NFSD_VFS_SYMLINK_EVENT(nfsd4_symlink); #endif /* _NFSD_TRACE_H */ #undef TRACE_INCLUDE_PATH -- 2.49.0