NFSoRDmA Client updates for Linux 5.11 Cleanups and improvements: - Remove use of raw kernel memory addresses in tracepoints - Replace dprintk() call sites in ERR_CHUNK path - Trace unmap sync calls - Optimize MR DMA-unmapping
Showing the changes to include/trace (1 of 7 files). Show all
Unified · Split
| @@ -60,7 +60,7 @@ DECLARE_EVENT_CLASS(rpcrdma_completion_class, · 59 unmodified lines | ||
| 60 | 60 | ), \ |
| 61 | 61 | TP_ARGS(wc, cid)) |
| 62 | 62 | |
| 63 | −DECLARE_EVENT_CLASS(xprtrdma_reply_event, | |
| 63 | +DECLARE_EVENT_CLASS(xprtrdma_reply_class, | |
| 64 | 64 | TP_PROTO( |
| 65 | 65 | const struct rpcrdma_rep *rep |
| 66 | 66 | ), |
| @@ -68,29 +68,30 @@ DECLARE_EVENT_CLASS(xprtrdma_reply_event, · 1 unmodified line | ||
| 68 | 68 | TP_ARGS(rep), |
| 69 | 69 | |
| 70 | 70 | TP_STRUCT__entry( |
| 71 | − __field(const void *, rep) | |
| 72 | − __field(const void *, r_xprt) | |
| 73 | 71 | __field(u32, xid) |
| 74 | 72 | __field(u32, version) |
| 75 | 73 | __field(u32, proc) |
| 74 | + __string(addr, rpcrdma_addrstr(rep->rr_rxprt)) | |
| 75 | + __string(port, rpcrdma_portstr(rep->rr_rxprt)) | |
| 76 | 76 | ), |
| 77 | 77 | |
| 78 | 78 | TP_fast_assign( |
| 79 | − __entry->rep = rep; | |
| 80 | − __entry->r_xprt = rep->rr_rxprt; | |
| 81 | 79 | __entry->xid = be32_to_cpu(rep->rr_xid); |
| 82 | 80 | __entry->version = be32_to_cpu(rep->rr_vers); |
| 83 | 81 | __entry->proc = be32_to_cpu(rep->rr_proc); |
| 82 | + __assign_str(addr, rpcrdma_addrstr(rep->rr_rxprt)); | |
| 83 | + __assign_str(port, rpcrdma_portstr(rep->rr_rxprt)); | |
| 84 | 84 | ), |
| 85 | 85 | |
| 86 | − TP_printk("rxprt %p xid=0x%08x rep=%p: version %u proc %u", | |
| 87 | − __entry->r_xprt, __entry->xid, __entry->rep, | |
| 88 | − __entry->version, __entry->proc | |
| 86 | + TP_printk("peer=[%s]:%s xid=0x%08x version=%u proc=%u", | |
| 87 | + __get_str(addr), __get_str(port), | |
| 88 | + __entry->xid, __entry->version, __entry->proc | |
| 89 | 89 | ) |
| 90 | 90 | ); |
| 91 | 91 | |
| 92 | 92 | #define DEFINE_REPLY_EVENT(name) \ |
| 93 | − DEFINE_EVENT(xprtrdma_reply_event, name, \ | |
| 93 | + DEFINE_EVENT(xprtrdma_reply_class, \ | |
| 94 | + xprtrdma_reply_##name##_err, \ | |
| 94 | 95 | TP_PROTO( \ |
| 95 | 96 | const struct rpcrdma_rep *rep \ |
| 96 | 97 | ), \ |
| @@ -261,54 +262,67 @@ DECLARE_EVENT_CLASS(xprtrdma_wrch_event, · 164 unmodified lines | ||
| 261 | 262 | ), \ |
| 262 | 263 | TP_ARGS(task, mr, nsegs)) |
| 263 | 264 | |
| 264 | −DECLARE_EVENT_CLASS(xprtrdma_frwr_done, | |
| 265 | +TRACE_DEFINE_ENUM(DMA_BIDIRECTIONAL); | |
| 266 | +TRACE_DEFINE_ENUM(DMA_TO_DEVICE); | |
| 267 | +TRACE_DEFINE_ENUM(DMA_FROM_DEVICE); | |
| 268 | +TRACE_DEFINE_ENUM(DMA_NONE); | |
| 269 | + | |
| 270 | +#define xprtrdma_show_direction(x) \ | |
| 271 | + __print_symbolic(x, \ | |
| 272 | + { DMA_BIDIRECTIONAL, "BIDIR" }, \ | |
| 273 | + { DMA_TO_DEVICE, "TO_DEVICE" }, \ | |
| 274 | + { DMA_FROM_DEVICE, "FROM_DEVICE" }, \ | |
| 275 | + { DMA_NONE, "NONE" }) | |
| 276 | + | |
| 277 | +DECLARE_EVENT_CLASS(xprtrdma_mr_class, | |
| 265 | 278 | TP_PROTO( |
| 266 | − const struct ib_wc *wc, | |
| 267 | − const struct rpcrdma_frwr *frwr | |
| 279 | + const struct rpcrdma_mr *mr | |
| 268 | 280 | ), |
| 269 | 281 | |
| 270 | − TP_ARGS(wc, frwr), | |
| 282 | + TP_ARGS(mr), | |
| 271 | 283 | |
| 272 | 284 | TP_STRUCT__entry( |
| 285 | + __field(unsigned int, task_id) | |
| 286 | + __field(unsigned int, client_id) | |
| 273 | 287 | __field(u32, mr_id) |
| 274 | − __field(unsigned int, status) | |
| 275 | − __field(unsigned int, vendor_err) | |
| 288 | + __field(int, nents) | |
| 289 | + __field(u32, handle) | |
| 290 | + __field(u32, length) | |
| 291 | + __field(u64, offset) | |
| 292 | + __field(u32, dir) | |
| 276 | 293 | ), |
| 277 | 294 | |
| 278 | 295 | TP_fast_assign( |
| 279 | − __entry->mr_id = frwr->fr_mr->res.id; | |
| 280 | − __entry->status = wc->status; | |
| 281 | − __entry->vendor_err = __entry->status ? wc->vendor_err : 0; | |
| 296 | + const struct rpcrdma_req *req = mr->mr_req; | |
| 297 | + const struct rpc_task *task = req->rl_slot.rq_task; | |
| 298 | + | |
| 299 | + __entry->task_id = task->tk_pid; | |
| 300 | + __entry->client_id = task->tk_client->cl_clid; | |
| 301 | + __entry->mr_id = mr->frwr.fr_mr->res.id; | |
| 302 | + __entry->nents = mr->mr_nents; | |
| 303 | + __entry->handle = mr->mr_handle; | |
| 304 | + __entry->length = mr->mr_length; | |
| 305 | + __entry->offset = mr->mr_offset; | |
| 306 | + __entry->dir = mr->mr_dir; | |
| 282 | 307 | ), |
| 283 | 308 | |
| 284 | − TP_printk( | |
| 285 | − "mr.id=%u: %s (%u/0x%x)", | |
| 286 | − __entry->mr_id, rdma_show_wc_status(__entry->status), | |
| 287 | − __entry->status, __entry->vendor_err | |
| 309 | + TP_printk("task:%u@%u mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s)", | |
| 310 | + __entry->task_id, __entry->client_id, | |
| 311 | + __entry->mr_id, __entry->nents, __entry->length, | |
| 312 | + (unsigned long long)__entry->offset, __entry->handle, | |
| 313 | + xprtrdma_show_direction(__entry->dir) | |
| 288 | 314 | ) |
| 289 | 315 | ); |
| 290 | 316 | |
| 291 | −#define DEFINE_FRWR_DONE_EVENT(name) \ | |
| 292 | − DEFINE_EVENT(xprtrdma_frwr_done, name, \ | |
| 317 | +#define DEFINE_MR_EVENT(name) \ | |
| 318 | + DEFINE_EVENT(xprtrdma_mr_class, \ | |
| 319 | + xprtrdma_mr_##name, \ | |
| 293 | 320 | TP_PROTO( \ |
| 294 | − const struct ib_wc *wc, \ | |
| 295 | − const struct rpcrdma_frwr *frwr \ | |
| 321 | + const struct rpcrdma_mr *mr \ | |
| 296 | 322 | ), \ |
| 297 | − TP_ARGS(wc, frwr)) | |
| 298 | − | |
| 299 | −TRACE_DEFINE_ENUM(DMA_BIDIRECTIONAL); | |
| 300 | −TRACE_DEFINE_ENUM(DMA_TO_DEVICE); | |
| 301 | −TRACE_DEFINE_ENUM(DMA_FROM_DEVICE); | |
| 302 | −TRACE_DEFINE_ENUM(DMA_NONE); | |
| 303 | − | |
| 304 | −#define xprtrdma_show_direction(x) \ | |
| 305 | − __print_symbolic(x, \ | |
| 306 | − { DMA_BIDIRECTIONAL, "BIDIR" }, \ | |
| 307 | − { DMA_TO_DEVICE, "TO_DEVICE" }, \ | |
| 308 | − { DMA_FROM_DEVICE, "FROM_DEVICE" }, \ | |
| 309 | − { DMA_NONE, "NONE" }) | |
| 323 | + TP_ARGS(mr)) | |
| 310 | 324 | |
| 311 | −DECLARE_EVENT_CLASS(xprtrdma_mr, | |
| 325 | +DECLARE_EVENT_CLASS(xprtrdma_anonymous_mr_class, | |
| 312 | 326 | TP_PROTO( |
| 313 | 327 | const struct rpcrdma_mr *mr |
| 314 | 328 | ), |
| @@ -340,45 +354,47 @@ DECLARE_EVENT_CLASS(xprtrdma_mr, · 25 unmodified lines | ||
| 340 | 354 | ) |
| 341 | 355 | ); |
| 342 | 356 | |
| 343 | −#define DEFINE_MR_EVENT(name) \ | |
| 344 | − DEFINE_EVENT(xprtrdma_mr, xprtrdma_mr_##name, \ | |
| 345 | − TP_PROTO( \ | |
| 346 | − const struct rpcrdma_mr *mr \ | |
| 347 | − ), \ | |
| 357 | +#define DEFINE_ANON_MR_EVENT(name) \ | |
| 358 | + DEFINE_EVENT(xprtrdma_anonymous_mr_class, \ | |
| 359 | + xprtrdma_mr_##name, \ | |
| 360 | + TP_PROTO( \ | |
| 361 | + const struct rpcrdma_mr *mr \ | |
| 362 | + ), \ | |
| 348 | 363 | TP_ARGS(mr)) |
| 349 | 364 | |
| 350 | −DECLARE_EVENT_CLASS(xprtrdma_cb_event, | |
| 365 | +DECLARE_EVENT_CLASS(xprtrdma_callback_class, | |
| 351 | 366 | TP_PROTO( |
| 367 | + const struct rpcrdma_xprt *r_xprt, | |
| 352 | 368 | const struct rpc_rqst *rqst |
| 353 | 369 | ), |
| 354 | 370 | |
| 355 | − TP_ARGS(rqst), | |
| 371 | + TP_ARGS(r_xprt, rqst), | |
| 356 | 372 | |
| 357 | 373 | TP_STRUCT__entry( |
| 358 | − __field(const void *, rqst) | |
| 359 | − __field(const void *, rep) | |
| 360 | − __field(const void *, req) | |
| 361 | 374 | __field(u32, xid) |
| 375 | + __string(addr, rpcrdma_addrstr(r_xprt)) | |
| 376 | + __string(port, rpcrdma_portstr(r_xprt)) | |
| 362 | 377 | ), |
| 363 | 378 | |
| 364 | 379 | TP_fast_assign( |
| 365 | − __entry->rqst = rqst; | |
| 366 | − __entry->req = rpcr_to_rdmar(rqst); | |
| 367 | − __entry->rep = rpcr_to_rdmar(rqst)->rl_reply; | |
| 368 | 380 | __entry->xid = be32_to_cpu(rqst->rq_xid); |
| 381 | + __assign_str(addr, rpcrdma_addrstr(r_xprt)); | |
| 382 | + __assign_str(port, rpcrdma_portstr(r_xprt)); | |
| 369 | 383 | ), |
| 370 | 384 | |
| 371 | − TP_printk("xid=0x%08x, rqst=%p req=%p rep=%p", | |
| 372 | − __entry->xid, __entry->rqst, __entry->req, __entry->rep | |
| 385 | + TP_printk("peer=[%s]:%s xid=0x%08x", | |
| 386 | + __get_str(addr), __get_str(port), __entry->xid | |
| 373 | 387 | ) |
| 374 | 388 | ); |
| 375 | 389 | |
| 376 | −#define DEFINE_CB_EVENT(name) \ | |
| 377 | − DEFINE_EVENT(xprtrdma_cb_event, name, \ | |
| 390 | +#define DEFINE_CALLBACK_EVENT(name) \ | |
| 391 | + DEFINE_EVENT(xprtrdma_callback_class, \ | |
| 392 | + xprtrdma_cb_##name, \ | |
| 378 | 393 | TP_PROTO( \ |
| 394 | + const struct rpcrdma_xprt *r_xprt, \ | |
| 379 | 395 | const struct rpc_rqst *rqst \ |
| 380 | 396 | ), \ |
| 381 | − TP_ARGS(rqst)) | |
| 397 | + TP_ARGS(r_xprt, rqst)) | |
| 382 | 398 | |
| 383 | 399 | /** |
| 384 | 400 | ** Connection events |
| @@ -549,61 +565,33 @@ TRACE_EVENT(xprtrdma_createmrs, · 164 unmodified lines | ||
| 549 | 565 | ) |
| 550 | 566 | ); |
| 551 | 567 | |
| 552 | −TRACE_EVENT(xprtrdma_mr_get, | |
| 553 | − TP_PROTO( | |
| 554 | − const struct rpcrdma_req *req | |
| 555 | − ), | |
| 556 | − | |
| 557 | − TP_ARGS(req), | |
| 558 | − | |
| 559 | − TP_STRUCT__entry( | |
| 560 | − __field(const void *, req) | |
| 561 | − __field(unsigned int, task_id) | |
| 562 | − __field(unsigned int, client_id) | |
| 563 | − __field(u32, xid) | |
| 564 | − ), | |
| 565 | − | |
| 566 | − TP_fast_assign( | |
| 567 | − const struct rpc_rqst *rqst = &req->rl_slot; | |
| 568 | − | |
| 569 | − __entry->req = req; | |
| 570 | − __entry->task_id = rqst->rq_task->tk_pid; | |
| 571 | − __entry->client_id = rqst->rq_task->tk_client->cl_clid; | |
| 572 | − __entry->xid = be32_to_cpu(rqst->rq_xid); | |
| 573 | − ), | |
| 574 | − | |
| 575 | − TP_printk("task:%u@%u xid=0x%08x req=%p", | |
| 576 | − __entry->task_id, __entry->client_id, __entry->xid, | |
| 577 | − __entry->req | |
| 578 | − ) | |
| 579 | −); | |
| 580 | − | |
| 581 | −TRACE_EVENT(xprtrdma_nomrs, | |
| 568 | +TRACE_EVENT(xprtrdma_nomrs_err, | |
| 582 | 569 | TP_PROTO( |
| 570 | + const struct rpcrdma_xprt *r_xprt, | |
| 583 | 571 | const struct rpcrdma_req *req |
| 584 | 572 | ), |
| 585 | 573 | |
| 586 | − TP_ARGS(req), | |
| 574 | + TP_ARGS(r_xprt, req), | |
| 587 | 575 | |
| 588 | 576 | TP_STRUCT__entry( |
| 589 | − __field(const void *, req) | |
| 590 | 577 | __field(unsigned int, task_id) |
| 591 | 578 | __field(unsigned int, client_id) |
| 592 | − __field(u32, xid) | |
| 579 | + __string(addr, rpcrdma_addrstr(r_xprt)) | |
| 580 | + __string(port, rpcrdma_portstr(r_xprt)) | |
| 593 | 581 | ), |
| 594 | 582 | |
| 595 | 583 | TP_fast_assign( |
| 596 | 584 | const struct rpc_rqst *rqst = &req->rl_slot; |
| 597 | 585 | |
| 598 | − __entry->req = req; | |
| 599 | 586 | __entry->task_id = rqst->rq_task->tk_pid; |
| 600 | 587 | __entry->client_id = rqst->rq_task->tk_client->cl_clid; |
| 601 | − __entry->xid = be32_to_cpu(rqst->rq_xid); | |
| 588 | + __assign_str(addr, rpcrdma_addrstr(r_xprt)); | |
| 589 | + __assign_str(port, rpcrdma_portstr(r_xprt)); | |
| 602 | 590 | ), |
| 603 | 591 | |
| 604 | − TP_printk("task:%u@%u xid=0x%08x req=%p", | |
| 605 | − __entry->task_id, __entry->client_id, __entry->xid, | |
| 606 | − __entry->req | |
| 592 | + TP_printk("peer=[%s]:%s task:%u@%u", | |
| 593 | + __get_str(addr), __get_str(port), | |
| 594 | + __entry->task_id, __entry->client_id | |
| 607 | 595 | ) |
| 608 | 596 | ); |
| 609 | 597 | |
| @@ -735,8 +723,8 @@ TRACE_EVENT(xprtrdma_post_send, · 125 unmodified lines | ||
| 735 | 723 | TP_ARGS(req), |
| 736 | 724 | |
| 737 | 725 | TP_STRUCT__entry( |
| 738 | − __field(const void *, req) | |
| 739 | − __field(const void *, sc) | |
| 726 | + __field(u32, cq_id) | |
| 727 | + __field(int, completion_id) | |
| 740 | 728 | __field(unsigned int, task_id) |
| 741 | 729 | __field(unsigned int, client_id) |
| 742 | 730 | __field(int, num_sge) |
| @@ -745,20 +733,21 @@ TRACE_EVENT(xprtrdma_post_send, · 2 unmodified lines | ||
| 745 | 733 | |
| 746 | 734 | TP_fast_assign( |
| 747 | 735 | const struct rpc_rqst *rqst = &req->rl_slot; |
| 736 | + const struct rpcrdma_sendctx *sc = req->rl_sendctx; | |
| 748 | 737 | |
| 738 | + __entry->cq_id = sc->sc_cid.ci_queue_id; | |
| 739 | + __entry->completion_id = sc->sc_cid.ci_completion_id; | |
| 749 | 740 | __entry->task_id = rqst->rq_task->tk_pid; |
| 750 | 741 | __entry->client_id = rqst->rq_task->tk_client ? |
| 751 | 742 | rqst->rq_task->tk_client->cl_clid : -1; |
| 752 | − __entry->req = req; | |
| 753 | − __entry->sc = req->rl_sendctx; | |
| 754 | 743 | __entry->num_sge = req->rl_wr.num_sge; |
| 755 | 744 | __entry->signaled = req->rl_wr.send_flags & IB_SEND_SIGNALED; |
| 756 | 745 | ), |
| 757 | 746 | |
| 758 | − TP_printk("task:%u@%u req=%p sc=%p (%d SGE%s) %s", | |
| 747 | + TP_printk("task:%u@%u cq.id=%u cid=%d (%d SGE%s) %s", | |
| 759 | 748 | __entry->task_id, __entry->client_id, |
| 760 | − __entry->req, __entry->sc, __entry->num_sge, | |
| 761 | − (__entry->num_sge == 1 ? "" : "s"), | |
| 749 | + __entry->cq_id, __entry->completion_id, | |
| 750 | + __entry->num_sge, (__entry->num_sge == 1 ? "" : "s"), | |
| 762 | 751 | (__entry->signaled ? "signaled" : "") |
| 763 | 752 | ) |
| 764 | 753 | ); |
| @@ -771,15 +760,17 @@ TRACE_EVENT(xprtrdma_post_recv, · 6 unmodified lines | ||
| 771 | 760 | TP_ARGS(rep), |
| 772 | 761 | |
| 773 | 762 | TP_STRUCT__entry( |
| 774 | − __field(const void *, rep) | |
| 763 | + __field(u32, cq_id) | |
| 764 | + __field(int, completion_id) | |
| 775 | 765 | ), |
| 776 | 766 | |
| 777 | 767 | TP_fast_assign( |
| 778 | − __entry->rep = rep; | |
| 768 | + __entry->cq_id = rep->rr_cid.ci_queue_id; | |
| 769 | + __entry->completion_id = rep->rr_cid.ci_completion_id; | |
| 779 | 770 | ), |
| 780 | 771 | |
| 781 | − TP_printk("rep=%p", | |
| 782 | − __entry->rep | |
| 772 | + TP_printk("cq.id=%d cid=%d", | |
| 773 | + __entry->cq_id, __entry->completion_id | |
| 783 | 774 | ) |
| 784 | 775 | ); |
| 785 | 776 | |
| @@ -816,7 +807,7 @@ TRACE_EVENT(xprtrdma_post_recvs, · 30 unmodified lines | ||
| 816 | 807 | ) |
| 817 | 808 | ); |
| 818 | 809 | |
| 819 | −TRACE_EVENT(xprtrdma_post_linv, | |
| 810 | +TRACE_EVENT(xprtrdma_post_linv_err, | |
| 820 | 811 | TP_PROTO( |
| 821 | 812 | const struct rpcrdma_req *req, |
| 822 | 813 | int status |
| @@ -825,19 +816,21 @@ TRACE_EVENT(xprtrdma_post_linv, · 2 unmodified lines | ||
| 825 | 816 | TP_ARGS(req, status), |
| 826 | 817 | |
| 827 | 818 | TP_STRUCT__entry( |
| 828 | − __field(const void *, req) | |
| 819 | + __field(unsigned int, task_id) | |
| 820 | + __field(unsigned int, client_id) | |
| 829 | 821 | __field(int, status) |
| 830 | − __field(u32, xid) | |
| 831 | 822 | ), |
| 832 | 823 | |
| 833 | 824 | TP_fast_assign( |
| 834 | − __entry->req = req; | |
| 825 | + const struct rpc_task *task = req->rl_slot.rq_task; | |
| 826 | + | |
| 827 | + __entry->task_id = task->tk_pid; | |
| 828 | + __entry->client_id = task->tk_client->cl_clid; | |
| 835 | 829 | __entry->status = status; |
| 836 | − __entry->xid = be32_to_cpu(req->rl_slot.rq_xid); | |
| 837 | 830 | ), |
| 838 | 831 | |
| 839 | − TP_printk("req=%p xid=0x%08x status=%d", | |
| 840 | − __entry->req, __entry->xid, __entry->status | |
| 832 | + TP_printk("task:%u@%u status=%d", | |
| 833 | + __entry->task_id, __entry->client_id, __entry->status | |
| 841 | 834 | ) |
| 842 | 835 | ); |
| 843 | 836 | |
| @@ -845,75 +838,12 @@ TRACE_EVENT(xprtrdma_post_linv, · 1 unmodified line | ||
| 845 | 838 | ** Completion events |
| 846 | 839 | **/ |
| 847 | 840 | |
| 848 | −TRACE_EVENT(xprtrdma_wc_send, | |
| 849 | − TP_PROTO( | |
| 850 | − const struct rpcrdma_sendctx *sc, | |
| 851 | − const struct ib_wc *wc | |
| 852 | − ), | |
| 853 | − | |
| 854 | − TP_ARGS(sc, wc), | |
| 855 | − | |
| 856 | − TP_STRUCT__entry( | |
| 857 | − __field(const void *, req) | |
| 858 | − __field(const void *, sc) | |
| 859 | − __field(unsigned int, unmap_count) | |
| 860 | − __field(unsigned int, status) | |
| 861 | − __field(unsigned int, vendor_err) | |
| 862 | − ), | |
| 863 | − | |
| 864 | − TP_fast_assign( | |
| 865 | − __entry->req = sc->sc_req; | |
| 866 | − __entry->sc = sc; | |
| 867 | − __entry->unmap_count = sc->sc_unmap_count; | |
| 868 | − __entry->status = wc->status; | |
| 869 | − __entry->vendor_err = __entry->status ? wc->vendor_err : 0; | |
| 870 | − ), | |
| 871 | − | |
| 872 | − TP_printk("req=%p sc=%p unmapped=%u: %s (%u/0x%x)", | |
| 873 | − __entry->req, __entry->sc, __entry->unmap_count, | |
| 874 | − rdma_show_wc_status(__entry->status), | |
| 875 | − __entry->status, __entry->vendor_err | |
| 876 | − ) | |
| 877 | −); | |
| 878 | − | |
| 879 | −TRACE_EVENT(xprtrdma_wc_receive, | |
| 880 | − TP_PROTO( | |
| 881 | − const struct ib_wc *wc | |
| 882 | − ), | |
| 883 | − | |
| 884 | − TP_ARGS(wc), | |
| 885 | − | |
| 886 | − TP_STRUCT__entry( | |
| 887 | − __field(const void *, rep) | |
| 888 | − __field(u32, byte_len) | |
| 889 | − __field(unsigned int, status) | |
| 890 | − __field(u32, vendor_err) | |
| 891 | − ), | |
| 892 | − | |
| 893 | − TP_fast_assign( | |
| 894 | − __entry->rep = container_of(wc->wr_cqe, struct rpcrdma_rep, | |
| 895 | − rr_cqe); | |
| 896 | − __entry->status = wc->status; | |
| 897 | − if (wc->status) { | |
| 898 | − __entry->byte_len = 0; | |
| 899 | − __entry->vendor_err = wc->vendor_err; | |
| 900 | − } else { | |
| 901 | − __entry->byte_len = wc->byte_len; | |
| 902 | − __entry->vendor_err = 0; | |
| 903 | − } | |
| 904 | − ), | |
| 905 | − | |
| 906 | − TP_printk("rep=%p %u bytes: %s (%u/0x%x)", | |
| 907 | − __entry->rep, __entry->byte_len, | |
| 908 | − rdma_show_wc_status(__entry->status), | |
| 909 | − __entry->status, __entry->vendor_err | |
| 910 | − ) | |
| 911 | −); | |
| 912 | − | |
| 913 | −DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_fastreg); | |
| 914 | −DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li); | |
| 915 | −DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_wake); | |
| 916 | −DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_done); | |
| 841 | +DEFINE_COMPLETION_EVENT(xprtrdma_wc_receive); | |
| 842 | +DEFINE_COMPLETION_EVENT(xprtrdma_wc_send); | |
| 843 | +DEFINE_COMPLETION_EVENT(xprtrdma_wc_fastreg); | |
| 844 | +DEFINE_COMPLETION_EVENT(xprtrdma_wc_li); | |
| 845 | +DEFINE_COMPLETION_EVENT(xprtrdma_wc_li_wake); | |
| 846 | +DEFINE_COMPLETION_EVENT(xprtrdma_wc_li_done); | |
| 917 | 847 | |
| 918 | 848 | TRACE_EVENT(xprtrdma_frwr_alloc, |
| 919 | 849 | TP_PROTO( |
| @@ -1036,9 +966,9 @@ TRACE_EVENT(xprtrdma_frwr_maperr, · 116 unmodified lines | ||
| 1036 | 966 | |
| 1037 | 967 | DEFINE_MR_EVENT(localinv); |
| 1038 | 968 | DEFINE_MR_EVENT(map); |
| 1039 | −DEFINE_MR_EVENT(unmap); | |
| 1040 | −DEFINE_MR_EVENT(reminv); | |
| 1041 | −DEFINE_MR_EVENT(recycle); | |
| 969 | + | |
| 970 | +DEFINE_ANON_MR_EVENT(unmap); | |
| 971 | +DEFINE_ANON_MR_EVENT(recycle); | |
| 1042 | 972 | |
| 1043 | 973 | TRACE_EVENT(xprtrdma_dma_maperr, |
| 1044 | 974 | TP_PROTO( |
| @@ -1066,17 +996,14 @@ TRACE_EVENT(xprtrdma_reply, · 21 unmodified lines | ||
| 1066 | 996 | TP_PROTO( |
| 1067 | 997 | const struct rpc_task *task, |
| 1068 | 998 | const struct rpcrdma_rep *rep, |
| 1069 | − const struct rpcrdma_req *req, | |
| 1070 | 999 | unsigned int credits |
| 1071 | 1000 | ), |
| 1072 | 1001 | |
| 1073 | − TP_ARGS(task, rep, req, credits), | |
| 1002 | + TP_ARGS(task, rep, credits), | |
| 1074 | 1003 | |
| 1075 | 1004 | TP_STRUCT__entry( |
| 1076 | 1005 | __field(unsigned int, task_id) |
| 1077 | 1006 | __field(unsigned int, client_id) |
| 1078 | − __field(const void *, rep) | |
| 1079 | − __field(const void *, req) | |
| 1080 | 1007 | __field(u32, xid) |
| 1081 | 1008 | __field(unsigned int, credits) |
| 1082 | 1009 | ), |
| @@ -1084,49 +1011,102 @@ TRACE_EVENT(xprtrdma_reply, · 1 unmodified line | ||
| 1084 | 1011 | TP_fast_assign( |
| 1085 | 1012 | __entry->task_id = task->tk_pid; |
| 1086 | 1013 | __entry->client_id = task->tk_client->cl_clid; |
| 1087 | − __entry->rep = rep; | |
| 1088 | − __entry->req = req; | |
| 1089 | 1014 | __entry->xid = be32_to_cpu(rep->rr_xid); |
| 1090 | 1015 | __entry->credits = credits; |
| 1091 | 1016 | ), |
| 1092 | 1017 | |
| 1093 | − TP_printk("task:%u@%u xid=0x%08x, %u credits, rep=%p -> req=%p", | |
| 1018 | + TP_printk("task:%u@%u xid=0x%08x credits=%u", | |
| 1094 | 1019 | __entry->task_id, __entry->client_id, __entry->xid, |
| 1095 | − __entry->credits, __entry->rep, __entry->req | |
| 1020 | + __entry->credits | |
| 1096 | 1021 | ) |
| 1097 | 1022 | ); |
| 1098 | 1023 | |
| 1099 | −TRACE_EVENT(xprtrdma_defer_cmp, | |
| 1024 | +DEFINE_REPLY_EVENT(vers); | |
| 1025 | +DEFINE_REPLY_EVENT(rqst); | |
| 1026 | +DEFINE_REPLY_EVENT(short); | |
| 1027 | +DEFINE_REPLY_EVENT(hdr); | |
| 1028 | + | |
| 1029 | +TRACE_EVENT(xprtrdma_err_vers, | |
| 1100 | 1030 | TP_PROTO( |
| 1101 | − const struct rpcrdma_rep *rep | |
| 1031 | + const struct rpc_rqst *rqst, | |
| 1032 | + __be32 *min, | |
| 1033 | + __be32 *max | |
| 1102 | 1034 | ), |
| 1103 | 1035 | |
| 1104 | − TP_ARGS(rep), | |
| 1036 | + TP_ARGS(rqst, min, max), | |
| 1105 | 1037 | |
| 1106 | 1038 | TP_STRUCT__entry( |
| 1107 | 1039 | __field(unsigned int, task_id) |
| 1108 | 1040 | __field(unsigned int, client_id) |
| 1109 | − __field(const void *, rep) | |
| 1110 | 1041 | __field(u32, xid) |
| 1042 | + __field(u32, min) | |
| 1043 | + __field(u32, max) | |
| 1111 | 1044 | ), |
| 1112 | 1045 | |
| 1113 | 1046 | TP_fast_assign( |
| 1114 | − __entry->task_id = rep->rr_rqst->rq_task->tk_pid; | |
| 1115 | − __entry->client_id = rep->rr_rqst->rq_task->tk_client->cl_clid; | |
| 1116 | − __entry->rep = rep; | |
| 1117 | − __entry->xid = be32_to_cpu(rep->rr_xid); | |
| 1047 | + __entry->task_id = rqst->rq_task->tk_pid; | |
| 1048 | + __entry->client_id = rqst->rq_task->tk_client->cl_clid; | |
| 1049 | + __entry->xid = be32_to_cpu(rqst->rq_xid); | |
| 1050 | + __entry->min = be32_to_cpup(min); | |
| 1051 | + __entry->max = be32_to_cpup(max); | |
| 1118 | 1052 | ), |
| 1119 | 1053 | |
| 1120 | − TP_printk("task:%u@%u xid=0x%08x rep=%p", | |
| 1054 | + TP_printk("task:%u@%u xid=0x%08x versions=[%u, %u]", | |
| 1121 | 1055 | __entry->task_id, __entry->client_id, __entry->xid, |
| 1122 | − __entry->rep | |
| 1056 | + __entry->min, __entry->max | |
| 1057 | + ) | |
| 1058 | +); | |
| 1059 | + | |
| 1060 | +TRACE_EVENT(xprtrdma_err_chunk, | |
| 1061 | + TP_PROTO( | |
| 1062 | + const struct rpc_rqst *rqst | |
| 1063 | + ), | |
| 1064 | + | |
| 1065 | + TP_ARGS(rqst), | |
| 1066 | + | |
| 1067 | + TP_STRUCT__entry( | |
| 1068 | + __field(unsigned int, task_id) | |
| 1069 | + __field(unsigned int, client_id) | |
| 1070 | + __field(u32, xid) | |
| 1071 | + ), | |
| 1072 | + | |
| 1073 | + TP_fast_assign( | |
| 1074 | + __entry->task_id = rqst->rq_task->tk_pid; | |
| 1075 | + __entry->client_id = rqst->rq_task->tk_client->cl_clid; | |
| 1076 | + __entry->xid = be32_to_cpu(rqst->rq_xid); | |
| 1077 | + ), | |
| 1078 | + | |
| 1079 | + TP_printk("task:%u@%u xid=0x%08x", | |
| 1080 | + __entry->task_id, __entry->client_id, __entry->xid | |
| 1123 | 1081 | ) |
| 1124 | 1082 | ); |
| 1125 | 1083 | |
| 1126 | −DEFINE_REPLY_EVENT(xprtrdma_reply_vers); | |
| 1127 | −DEFINE_REPLY_EVENT(xprtrdma_reply_rqst); | |
| 1128 | −DEFINE_REPLY_EVENT(xprtrdma_reply_short); | |
| 1129 | −DEFINE_REPLY_EVENT(xprtrdma_reply_hdr); | |
| 1084 | +TRACE_EVENT(xprtrdma_err_unrecognized, | |
| 1085 | + TP_PROTO( | |
| 1086 | + const struct rpc_rqst *rqst, | |
| 1087 | + __be32 *procedure | |
| 1088 | + ), | |
| 1089 | + | |
| 1090 | + TP_ARGS(rqst, procedure), | |
| 1091 | + | |
| 1092 | + TP_STRUCT__entry( | |
| 1093 | + __field(unsigned int, task_id) | |
| 1094 | + __field(unsigned int, client_id) | |
| 1095 | + __field(u32, xid) | |
| 1096 | + __field(u32, procedure) | |
| 1097 | + ), | |
| 1098 | + | |
| 1099 | + TP_fast_assign( | |
| 1100 | + __entry->task_id = rqst->rq_task->tk_pid; | |
| 1101 | + __entry->client_id = rqst->rq_task->tk_client->cl_clid; | |
| 1102 | + __entry->procedure = be32_to_cpup(procedure); | |
| 1103 | + ), | |
| 1104 | + | |
| 1105 | + TP_printk("task:%u@%u xid=0x%08x procedure=%u", | |
| 1106 | + __entry->task_id, __entry->client_id, __entry->xid, | |
| 1107 | + __entry->procedure | |
| 1108 | + ) | |
| 1109 | +); | |
| 1130 | 1110 | |
| 1131 | 1111 | TRACE_EVENT(xprtrdma_fixup, |
| 1132 | 1112 | TP_PROTO( |
| @@ -1187,6 +1167,28 @@ TRACE_EVENT(xprtrdma_decode_seg, · 54 unmodified lines | ||
| 1187 | 1167 | ) |
| 1188 | 1168 | ); |
| 1189 | 1169 | |
| 1170 | +TRACE_EVENT(xprtrdma_mrs_zap, | |
| 1171 | + TP_PROTO( | |
| 1172 | + const struct rpc_task *task | |
| 1173 | + ), | |
| 1174 | + | |
| 1175 | + TP_ARGS(task), | |
| 1176 | + | |
| 1177 | + TP_STRUCT__entry( | |
| 1178 | + __field(unsigned int, task_id) | |
| 1179 | + __field(unsigned int, client_id) | |
| 1180 | + ), | |
| 1181 | + | |
| 1182 | + TP_fast_assign( | |
| 1183 | + __entry->task_id = task->tk_pid; | |
| 1184 | + __entry->client_id = task->tk_client->cl_clid; | |
| 1185 | + ), | |
| 1186 | + | |
| 1187 | + TP_printk("task:%u@%u", | |
| 1188 | + __entry->task_id, __entry->client_id | |
| 1189 | + ) | |
| 1190 | +); | |
| 1191 | + | |
| 1190 | 1192 | /** |
| 1191 | 1193 | ** Callback events |
| 1192 | 1194 | **/ |
| @@ -1219,36 +1221,8 @@ TRACE_EVENT(xprtrdma_cb_setup, · 26 unmodified lines | ||
| 1219 | 1221 | ) |
| 1220 | 1222 | ); |
| 1221 | 1223 | |
| 1222 | −DEFINE_CB_EVENT(xprtrdma_cb_call); | |
| 1223 | −DEFINE_CB_EVENT(xprtrdma_cb_reply); | |
| 1224 | − | |
| 1225 | −TRACE_EVENT(xprtrdma_leaked_rep, | |
| 1226 | − TP_PROTO( | |
| 1227 | − const struct rpc_rqst *rqst, | |
| 1228 | − const struct rpcrdma_rep *rep | |
| 1229 | − ), | |
| 1230 | − | |
| 1231 | − TP_ARGS(rqst, rep), | |
| 1232 | − | |
| 1233 | − TP_STRUCT__entry( | |
| 1234 | − __field(unsigned int, task_id) | |
| 1235 | − __field(unsigned int, client_id) | |
| 1236 | − __field(u32, xid) | |
| 1237 | − __field(const void *, rep) | |
| 1238 | − ), | |
| 1239 | − | |
| 1240 | − TP_fast_assign( | |
| 1241 | − __entry->task_id = rqst->rq_task->tk_pid; | |
| 1242 | − __entry->client_id = rqst->rq_task->tk_client->cl_clid; | |
| 1243 | − __entry->xid = be32_to_cpu(rqst->rq_xid); | |
| 1244 | − __entry->rep = rep; | |
| 1245 | − ), | |
| 1246 | − | |
| 1247 | − TP_printk("task:%u@%u xid=0x%08x rep=%p", | |
| 1248 | − __entry->task_id, __entry->client_id, __entry->xid, | |
| 1249 | − __entry->rep | |
| 1250 | − ) | |
| 1251 | −); | |
| 1224 | +DEFINE_CALLBACK_EVENT(call); | |
| 1225 | +DEFINE_CALLBACK_EVENT(reply); | |
| 1252 | 1226 | |
| 1253 | 1227 | /** |
| 1254 | 1228 | ** Server-side RPC/RDMA events |