aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2018-12-19 10:59:49 -0500
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2019-01-02 12:05:18 -0500
commitaba11831794356ff58da69de46a125e6335eb9ca (patch)
tree31149d0fb9bc52323bb70c5609c9e3055a1c1b80
parent9bef848f44b4316fbe12e364eea527bd59fa1ed3 (diff)
xprtrdma: Clean up of xprtrdma chunk trace points
The chunk-related trace points capture nearly the same information as the MR-related trace points. Also, rename them so globbing can be used to enable or disable these trace points more easily. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-rw-r--r--include/trace/events/rpcrdma.h42
-rw-r--r--net/sunrpc/xprtrdma/rpc_rdma.c6
2 files changed, 29 insertions, 19 deletions
diff --git a/include/trace/events/rpcrdma.h b/include/trace/events/rpcrdma.h
index 2efe2d7d6683..e9fbf7dbc16f 100644
--- a/include/trace/events/rpcrdma.h
+++ b/include/trace/events/rpcrdma.h
@@ -97,7 +97,6 @@ DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
97 TP_STRUCT__entry( 97 TP_STRUCT__entry(
98 __field(unsigned int, task_id) 98 __field(unsigned int, task_id)
99 __field(unsigned int, client_id) 99 __field(unsigned int, client_id)
100 __field(const void *, mr)
101 __field(unsigned int, pos) 100 __field(unsigned int, pos)
102 __field(int, nents) 101 __field(int, nents)
103 __field(u32, handle) 102 __field(u32, handle)
@@ -109,7 +108,6 @@ DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
109 TP_fast_assign( 108 TP_fast_assign(
110 __entry->task_id = task->tk_pid; 109 __entry->task_id = task->tk_pid;
111 __entry->client_id = task->tk_client->cl_clid; 110 __entry->client_id = task->tk_client->cl_clid;
112 __entry->mr = mr;
113 __entry->pos = pos; 111 __entry->pos = pos;
114 __entry->nents = mr->mr_nents; 112 __entry->nents = mr->mr_nents;
115 __entry->handle = mr->mr_handle; 113 __entry->handle = mr->mr_handle;
@@ -118,8 +116,8 @@ DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
118 __entry->nsegs = nsegs; 116 __entry->nsegs = nsegs;
119 ), 117 ),
120 118
121 TP_printk("task:%u@%u mr=%p pos=%u %u@0x%016llx:0x%08x (%s)", 119 TP_printk("task:%u@%u pos=%u %u@0x%016llx:0x%08x (%s)",
122 __entry->task_id, __entry->client_id, __entry->mr, 120 __entry->task_id, __entry->client_id,
123 __entry->pos, __entry->length, 121 __entry->pos, __entry->length,
124 (unsigned long long)__entry->offset, __entry->handle, 122 (unsigned long long)__entry->offset, __entry->handle,
125 __entry->nents < __entry->nsegs ? "more" : "last" 123 __entry->nents < __entry->nsegs ? "more" : "last"
@@ -127,7 +125,7 @@ DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
127); 125);
128 126
129#define DEFINE_RDCH_EVENT(name) \ 127#define DEFINE_RDCH_EVENT(name) \
130 DEFINE_EVENT(xprtrdma_rdch_event, name, \ 128 DEFINE_EVENT(xprtrdma_rdch_event, xprtrdma_chunk_##name,\
131 TP_PROTO( \ 129 TP_PROTO( \
132 const struct rpc_task *task, \ 130 const struct rpc_task *task, \
133 unsigned int pos, \ 131 unsigned int pos, \
@@ -148,7 +146,6 @@ DECLARE_EVENT_CLASS(xprtrdma_wrch_event,
148 TP_STRUCT__entry( 146 TP_STRUCT__entry(
149 __field(unsigned int, task_id) 147 __field(unsigned int, task_id)
150 __field(unsigned int, client_id) 148 __field(unsigned int, client_id)
151 __field(const void *, mr)
152 __field(int, nents) 149 __field(int, nents)
153 __field(u32, handle) 150 __field(u32, handle)
154 __field(u32, length) 151 __field(u32, length)
@@ -159,7 +156,6 @@ DECLARE_EVENT_CLASS(xprtrdma_wrch_event,
159 TP_fast_assign( 156 TP_fast_assign(
160 __entry->task_id = task->tk_pid; 157 __entry->task_id = task->tk_pid;
161 __entry->client_id = task->tk_client->cl_clid; 158 __entry->client_id = task->tk_client->cl_clid;
162 __entry->mr = mr;
163 __entry->nents = mr->mr_nents; 159 __entry->nents = mr->mr_nents;
164 __entry->handle = mr->mr_handle; 160 __entry->handle = mr->mr_handle;
165 __entry->length = mr->mr_length; 161 __entry->length = mr->mr_length;
@@ -167,8 +163,8 @@ DECLARE_EVENT_CLASS(xprtrdma_wrch_event,
167 __entry->nsegs = nsegs; 163 __entry->nsegs = nsegs;
168 ), 164 ),
169 165
170 TP_printk("task:%u@%u mr=%p %u@0x%016llx:0x%08x (%s)", 166 TP_printk("task:%u@%u %u@0x%016llx:0x%08x (%s)",
171 __entry->task_id, __entry->client_id, __entry->mr, 167 __entry->task_id, __entry->client_id,
172 __entry->length, (unsigned long long)__entry->offset, 168 __entry->length, (unsigned long long)__entry->offset,
173 __entry->handle, 169 __entry->handle,
174 __entry->nents < __entry->nsegs ? "more" : "last" 170 __entry->nents < __entry->nsegs ? "more" : "last"
@@ -176,7 +172,7 @@ DECLARE_EVENT_CLASS(xprtrdma_wrch_event,
176); 172);
177 173
178#define DEFINE_WRCH_EVENT(name) \ 174#define DEFINE_WRCH_EVENT(name) \
179 DEFINE_EVENT(xprtrdma_wrch_event, name, \ 175 DEFINE_EVENT(xprtrdma_wrch_event, xprtrdma_chunk_##name,\
180 TP_PROTO( \ 176 TP_PROTO( \
181 const struct rpc_task *task, \ 177 const struct rpc_task *task, \
182 struct rpcrdma_mr *mr, \ 178 struct rpcrdma_mr *mr, \
@@ -234,6 +230,18 @@ DECLARE_EVENT_CLASS(xprtrdma_frwr_done,
234 ), \ 230 ), \
235 TP_ARGS(wc, frwr)) 231 TP_ARGS(wc, frwr))
236 232
233TRACE_DEFINE_ENUM(DMA_BIDIRECTIONAL);
234TRACE_DEFINE_ENUM(DMA_TO_DEVICE);
235TRACE_DEFINE_ENUM(DMA_FROM_DEVICE);
236TRACE_DEFINE_ENUM(DMA_NONE);
237
238#define xprtrdma_show_direction(x) \
239 __print_symbolic(x, \
240 { DMA_BIDIRECTIONAL, "BIDIR" }, \
241 { DMA_TO_DEVICE, "TO_DEVICE" }, \
242 { DMA_FROM_DEVICE, "FROM_DEVICE" }, \
243 { DMA_NONE, "NONE" })
244
237DECLARE_EVENT_CLASS(xprtrdma_mr, 245DECLARE_EVENT_CLASS(xprtrdma_mr,
238 TP_PROTO( 246 TP_PROTO(
239 const struct rpcrdma_mr *mr 247 const struct rpcrdma_mr *mr
@@ -246,6 +254,7 @@ DECLARE_EVENT_CLASS(xprtrdma_mr,
246 __field(u32, handle) 254 __field(u32, handle)
247 __field(u32, length) 255 __field(u32, length)
248 __field(u64, offset) 256 __field(u64, offset)
257 __field(u32, dir)
249 ), 258 ),
250 259
251 TP_fast_assign( 260 TP_fast_assign(
@@ -253,12 +262,13 @@ DECLARE_EVENT_CLASS(xprtrdma_mr,
253 __entry->handle = mr->mr_handle; 262 __entry->handle = mr->mr_handle;
254 __entry->length = mr->mr_length; 263 __entry->length = mr->mr_length;
255 __entry->offset = mr->mr_offset; 264 __entry->offset = mr->mr_offset;
265 __entry->dir = mr->mr_dir;
256 ), 266 ),
257 267
258 TP_printk("mr=%p %u@0x%016llx:0x%08x", 268 TP_printk("mr=%p %u@0x%016llx:0x%08x (%s)",
259 __entry->mr, __entry->length, 269 __entry->mr, __entry->length,
260 (unsigned long long)__entry->offset, 270 (unsigned long long)__entry->offset, __entry->handle,
261 __entry->handle 271 xprtrdma_show_direction(__entry->dir)
262 ) 272 )
263); 273);
264 274
@@ -437,9 +447,9 @@ TRACE_EVENT(xprtrdma_createmrs,
437 447
438DEFINE_RXPRT_EVENT(xprtrdma_nomrs); 448DEFINE_RXPRT_EVENT(xprtrdma_nomrs);
439 449
440DEFINE_RDCH_EVENT(xprtrdma_read_chunk); 450DEFINE_RDCH_EVENT(read);
441DEFINE_WRCH_EVENT(xprtrdma_write_chunk); 451DEFINE_WRCH_EVENT(write);
442DEFINE_WRCH_EVENT(xprtrdma_reply_chunk); 452DEFINE_WRCH_EVENT(reply);
443 453
444TRACE_DEFINE_ENUM(rpcrdma_noch); 454TRACE_DEFINE_ENUM(rpcrdma_noch);
445TRACE_DEFINE_ENUM(rpcrdma_readch); 455TRACE_DEFINE_ENUM(rpcrdma_readch);
diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c
index 5a587698c885..54fbd70c661c 100644
--- a/net/sunrpc/xprtrdma/rpc_rdma.c
+++ b/net/sunrpc/xprtrdma/rpc_rdma.c
@@ -365,7 +365,7 @@ rpcrdma_encode_read_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
365 if (encode_read_segment(xdr, mr, pos) < 0) 365 if (encode_read_segment(xdr, mr, pos) < 0)
366 return -EMSGSIZE; 366 return -EMSGSIZE;
367 367
368 trace_xprtrdma_read_chunk(rqst->rq_task, pos, mr, nsegs); 368 trace_xprtrdma_chunk_read(rqst->rq_task, pos, mr, nsegs);
369 r_xprt->rx_stats.read_chunk_count++; 369 r_xprt->rx_stats.read_chunk_count++;
370 nsegs -= mr->mr_nents; 370 nsegs -= mr->mr_nents;
371 } while (nsegs); 371 } while (nsegs);
@@ -422,7 +422,7 @@ rpcrdma_encode_write_list(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
422 if (encode_rdma_segment(xdr, mr) < 0) 422 if (encode_rdma_segment(xdr, mr) < 0)
423 return -EMSGSIZE; 423 return -EMSGSIZE;
424 424
425 trace_xprtrdma_write_chunk(rqst->rq_task, mr, nsegs); 425 trace_xprtrdma_chunk_write(rqst->rq_task, mr, nsegs);
426 r_xprt->rx_stats.write_chunk_count++; 426 r_xprt->rx_stats.write_chunk_count++;
427 r_xprt->rx_stats.total_rdma_request += mr->mr_length; 427 r_xprt->rx_stats.total_rdma_request += mr->mr_length;
428 nchunks++; 428 nchunks++;
@@ -479,7 +479,7 @@ rpcrdma_encode_reply_chunk(struct rpcrdma_xprt *r_xprt, struct rpcrdma_req *req,
479 if (encode_rdma_segment(xdr, mr) < 0) 479 if (encode_rdma_segment(xdr, mr) < 0)
480 return -EMSGSIZE; 480 return -EMSGSIZE;
481 481
482 trace_xprtrdma_reply_chunk(rqst->rq_task, mr, nsegs); 482 trace_xprtrdma_chunk_reply(rqst->rq_task, mr, nsegs);
483 r_xprt->rx_stats.reply_chunk_count++; 483 r_xprt->rx_stats.reply_chunk_count++;
484 r_xprt->rx_stats.total_rdma_request += mr->mr_length; 484 r_xprt->rx_stats.total_rdma_request += mr->mr_length;
485 nchunks++; 485 nchunks++;