diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2021-11-02 17:28:37 -0400 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2022-12-14 09:48:43 -0500 |
commit | d2c0a06f656f839955dcb24c15c37a543231fb49 (patch) | |
tree | 3cdae4872062ab6e6b8285b6cb1d62bcb15ae925 | |
parent | 154aa123ba2d7559651013e211d4913c7d8f7f2b (diff) |
NFSD: Add tracepoints to record NFSv4 WRITE arguments and resultstopic-xdr-tracepoints
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 5 | ||||
-rw-r--r-- | fs/nfsd/xdr4trace.h | 58 |
2 files changed, 62 insertions, 1 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 9a660c22dc87b8..f3421d058ee097 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1638,6 +1638,7 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) write->wr_bytes_written = 0; write->wr_how_written = 0; memset(&write->wr_verifier, 0, sizeof(write->wr_verifier)); + trace_dec_write4args(argp, write); return nfs_ok; } @@ -4895,7 +4896,9 @@ nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_w *p++ = cpu_to_be32(write->wr_how_written); p = xdr_encode_opaque_fixed(p, write->wr_verifier.data, NFS4_VERIFIER_SIZE); - return 0; + + trace_enc_write4resok(resp, write); + return nfs_ok; } static __be32 diff --git a/fs/nfsd/xdr4trace.h b/fs/nfsd/xdr4trace.h index 5d34a0b5bd999c..8825436b663c58 100644 --- a/fs/nfsd/xdr4trace.h +++ b/fs/nfsd/xdr4trace.h @@ -1919,6 +1919,36 @@ TRACE_EVENT(dec_verify4args, ) ); +TRACE_EVENT(dec_write4args, + TP_PROTO( + const struct nfsd4_compoundargs *argp, + const struct nfsd4_write *write + ), + TP_ARGS(argp, write), + TP_STRUCT__entry( + TRACE_SVC_XDR_CMPD_FIELDS + TRACE_NFS4_STATEID_FIELDS + + __field(u32, count) + __field(u64, offset) + __field(unsigned long, stable) + ), + TP_fast_assign( + TRACE_SVC_XDR_CMPD_ARG_ASSIGNS(argp); + TRACE_NFS4_STATEID_ASSIGNS(&write->wr_stateid); + + __entry->count = write->wr_buflen; + __entry->offset = write->wr_offset; + __entry->stable = write->wr_stable_how; + ), + TP_printk(TRACE_XDR_CMPD_FORMAT TRACE_NFS4_STATEID_FORMAT + "count=%u offset=%llu stable=%s", + TRACE_XDR_CMPD_VARARGS, TRACE_NFS4_STATEID_VARARGS, + __entry->count, __entry->offset, + show_nfs_stable_how(__entry->stable) + ) +); + /** ** Server-side result encoding tracepoints @@ -3006,6 +3036,34 @@ TRACE_EVENT(enc_test_stateid4resok, ) ); +TRACE_EVENT(enc_write4resok, + TP_PROTO( + const struct nfsd4_compoundres *resp, + const struct nfsd4_write *write + ), + TP_ARGS(resp, write), + TP_STRUCT__entry( + TRACE_SVC_XDR_CMPD_FIELDS + TRACE_NFS4_VERIFIER_FIELD + + __field(u32, count) + __field(unsigned long, committed) + ), + TP_fast_assign( + TRACE_SVC_XDR_CMPD_RES_ASSIGNS(resp); + TRACE_NFS4_VERIFIER_ASSIGN(write->wr_verifier); + + __entry->count = write->wr_bytes_written; + __entry->committed = write->wr_how_written; + ), + TP_printk(TRACE_XDR_CMPD_FORMAT + "count=%u committed=%s " TRACE_NFS4_VERIFIER_FORMAT, + TRACE_XDR_CMPD_VARARGS, __entry->count, + show_nfs_stable_how(__entry->committed), + TRACE_NFS4_VERIFIER_VARARG + ) +); + /** ** FATTR4 tracepoints |