diff options
| author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-04 18:57:13 -0400 |
|---|---|---|
| committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-04 18:57:13 -0400 |
| commit | fcda3d5d221bbfc469415b0fa7dc4eb87d90d955 (patch) | |
| tree | a428ad27d04527a1a17973262d00b35f037eecc3 /include/trace | |
| parent | 3f0b3cf46e0542ac4b4241c579b944b755d11b67 (diff) | |
| parent | 11d0ac16b02eab8cda32efcb51bfab452dab760b (diff) | |
Merge tag 'nfs-rdma-for-4.18-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
NFS-over-RDMA client updates for Linux 4.18
Stable patches:
- xprtrdma: Return -ENOBUFS when no pages are available
New features:
- Add ->alloc_slot() and ->free_slot() functions
Bugfixes and cleanups:
- Add missing SPDX tags to some files
- Try to fail mount quickly if client has no RDMA devices
- Create transport IDs in the correct network namespace
- Fix max_send_wr computation
- Clean up receive tracepoints
- Refactor receive handling
- Remove unused functions
Diffstat (limited to 'include/trace')
| -rw-r--r-- | include/trace/events/rpcrdma.h | 76 |
1 files changed, 53 insertions, 23 deletions
diff --git a/include/trace/events/rpcrdma.h b/include/trace/events/rpcrdma.h index 50ed3f8bf534..c4494a2b3ecd 100644 --- a/include/trace/events/rpcrdma.h +++ b/include/trace/events/rpcrdma.h | |||
| @@ -528,24 +528,54 @@ TRACE_EVENT(xprtrdma_post_send, | |||
| 528 | 528 | ||
| 529 | TRACE_EVENT(xprtrdma_post_recv, | 529 | TRACE_EVENT(xprtrdma_post_recv, |
| 530 | TP_PROTO( | 530 | TP_PROTO( |
| 531 | const struct rpcrdma_rep *rep, | 531 | const struct ib_cqe *cqe |
| 532 | ), | ||
| 533 | |||
| 534 | TP_ARGS(cqe), | ||
| 535 | |||
| 536 | TP_STRUCT__entry( | ||
| 537 | __field(const void *, cqe) | ||
| 538 | ), | ||
| 539 | |||
| 540 | TP_fast_assign( | ||
| 541 | __entry->cqe = cqe; | ||
| 542 | ), | ||
| 543 | |||
| 544 | TP_printk("cqe=%p", | ||
| 545 | __entry->cqe | ||
| 546 | ) | ||
| 547 | ); | ||
| 548 | |||
| 549 | TRACE_EVENT(xprtrdma_post_recvs, | ||
| 550 | TP_PROTO( | ||
| 551 | const struct rpcrdma_xprt *r_xprt, | ||
| 552 | unsigned int count, | ||
| 532 | int status | 553 | int status |
| 533 | ), | 554 | ), |
| 534 | 555 | ||
| 535 | TP_ARGS(rep, status), | 556 | TP_ARGS(r_xprt, count, status), |
| 536 | 557 | ||
| 537 | TP_STRUCT__entry( | 558 | TP_STRUCT__entry( |
| 538 | __field(const void *, rep) | 559 | __field(const void *, r_xprt) |
| 560 | __field(unsigned int, count) | ||
| 539 | __field(int, status) | 561 | __field(int, status) |
| 562 | __field(int, posted) | ||
| 563 | __string(addr, rpcrdma_addrstr(r_xprt)) | ||
| 564 | __string(port, rpcrdma_portstr(r_xprt)) | ||
| 540 | ), | 565 | ), |
| 541 | 566 | ||
| 542 | TP_fast_assign( | 567 | TP_fast_assign( |
| 543 | __entry->rep = rep; | 568 | __entry->r_xprt = r_xprt; |
| 569 | __entry->count = count; | ||
| 544 | __entry->status = status; | 570 | __entry->status = status; |
| 571 | __entry->posted = r_xprt->rx_buf.rb_posted_receives; | ||
| 572 | __assign_str(addr, rpcrdma_addrstr(r_xprt)); | ||
| 573 | __assign_str(port, rpcrdma_portstr(r_xprt)); | ||
| 545 | ), | 574 | ), |
| 546 | 575 | ||
| 547 | TP_printk("rep=%p status=%d", | 576 | TP_printk("peer=[%s]:%s r_xprt=%p: %u new recvs, %d active (rc %d)", |
| 548 | __entry->rep, __entry->status | 577 | __get_str(addr), __get_str(port), __entry->r_xprt, |
| 578 | __entry->count, __entry->posted, __entry->status | ||
| 549 | ) | 579 | ) |
| 550 | ); | 580 | ); |
| 551 | 581 | ||
| @@ -584,28 +614,32 @@ TRACE_EVENT(xprtrdma_wc_send, | |||
| 584 | 614 | ||
| 585 | TRACE_EVENT(xprtrdma_wc_receive, | 615 | TRACE_EVENT(xprtrdma_wc_receive, |
| 586 | TP_PROTO( | 616 | TP_PROTO( |
| 587 | const struct rpcrdma_rep *rep, | ||
| 588 | const struct ib_wc *wc | 617 | const struct ib_wc *wc |
| 589 | ), | 618 | ), |
| 590 | 619 | ||
| 591 | TP_ARGS(rep, wc), | 620 | TP_ARGS(wc), |
| 592 | 621 | ||
| 593 | TP_STRUCT__entry( | 622 | TP_STRUCT__entry( |
| 594 | __field(const void *, rep) | 623 | __field(const void *, cqe) |
| 595 | __field(unsigned int, byte_len) | 624 | __field(u32, byte_len) |
| 596 | __field(unsigned int, status) | 625 | __field(unsigned int, status) |
| 597 | __field(unsigned int, vendor_err) | 626 | __field(u32, vendor_err) |
| 598 | ), | 627 | ), |
| 599 | 628 | ||
| 600 | TP_fast_assign( | 629 | TP_fast_assign( |
| 601 | __entry->rep = rep; | 630 | __entry->cqe = wc->wr_cqe; |
| 602 | __entry->byte_len = wc->byte_len; | ||
| 603 | __entry->status = wc->status; | 631 | __entry->status = wc->status; |
| 604 | __entry->vendor_err = __entry->status ? wc->vendor_err : 0; | 632 | if (wc->status) { |
| 633 | __entry->byte_len = 0; | ||
| 634 | __entry->vendor_err = wc->vendor_err; | ||
| 635 | } else { | ||
| 636 | __entry->byte_len = wc->byte_len; | ||
| 637 | __entry->vendor_err = 0; | ||
| 638 | } | ||
| 605 | ), | 639 | ), |
| 606 | 640 | ||
| 607 | TP_printk("rep=%p, %u bytes: %s (%u/0x%x)", | 641 | TP_printk("cqe=%p %u bytes: %s (%u/0x%x)", |
| 608 | __entry->rep, __entry->byte_len, | 642 | __entry->cqe, __entry->byte_len, |
| 609 | rdma_show_wc_status(__entry->status), | 643 | rdma_show_wc_status(__entry->status), |
| 610 | __entry->status, __entry->vendor_err | 644 | __entry->status, __entry->vendor_err |
| 611 | ) | 645 | ) |
| @@ -616,6 +650,7 @@ DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li); | |||
| 616 | DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_wake); | 650 | DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_wake); |
| 617 | 651 | ||
| 618 | DEFINE_MR_EVENT(xprtrdma_localinv); | 652 | DEFINE_MR_EVENT(xprtrdma_localinv); |
| 653 | DEFINE_MR_EVENT(xprtrdma_dma_map); | ||
| 619 | DEFINE_MR_EVENT(xprtrdma_dma_unmap); | 654 | DEFINE_MR_EVENT(xprtrdma_dma_unmap); |
| 620 | DEFINE_MR_EVENT(xprtrdma_remoteinv); | 655 | DEFINE_MR_EVENT(xprtrdma_remoteinv); |
| 621 | DEFINE_MR_EVENT(xprtrdma_recover_mr); | 656 | DEFINE_MR_EVENT(xprtrdma_recover_mr); |
| @@ -799,7 +834,6 @@ TRACE_EVENT(xprtrdma_allocate, | |||
| 799 | __field(unsigned int, task_id) | 834 | __field(unsigned int, task_id) |
| 800 | __field(unsigned int, client_id) | 835 | __field(unsigned int, client_id) |
| 801 | __field(const void *, req) | 836 | __field(const void *, req) |
| 802 | __field(const void *, rep) | ||
| 803 | __field(size_t, callsize) | 837 | __field(size_t, callsize) |
| 804 | __field(size_t, rcvsize) | 838 | __field(size_t, rcvsize) |
| 805 | ), | 839 | ), |
| @@ -808,15 +842,13 @@ TRACE_EVENT(xprtrdma_allocate, | |||
| 808 | __entry->task_id = task->tk_pid; | 842 | __entry->task_id = task->tk_pid; |
| 809 | __entry->client_id = task->tk_client->cl_clid; | 843 | __entry->client_id = task->tk_client->cl_clid; |
| 810 | __entry->req = req; | 844 | __entry->req = req; |
| 811 | __entry->rep = req ? req->rl_reply : NULL; | ||
| 812 | __entry->callsize = task->tk_rqstp->rq_callsize; | 845 | __entry->callsize = task->tk_rqstp->rq_callsize; |
| 813 | __entry->rcvsize = task->tk_rqstp->rq_rcvsize; | 846 | __entry->rcvsize = task->tk_rqstp->rq_rcvsize; |
| 814 | ), | 847 | ), |
| 815 | 848 | ||
| 816 | TP_printk("task:%u@%u req=%p rep=%p (%zu, %zu)", | 849 | TP_printk("task:%u@%u req=%p (%zu, %zu)", |
| 817 | __entry->task_id, __entry->client_id, | 850 | __entry->task_id, __entry->client_id, |
| 818 | __entry->req, __entry->rep, | 851 | __entry->req, __entry->callsize, __entry->rcvsize |
| 819 | __entry->callsize, __entry->rcvsize | ||
| 820 | ) | 852 | ) |
| 821 | ); | 853 | ); |
| 822 | 854 | ||
| @@ -848,8 +880,6 @@ TRACE_EVENT(xprtrdma_rpc_done, | |||
| 848 | ) | 880 | ) |
| 849 | ); | 881 | ); |
| 850 | 882 | ||
| 851 | DEFINE_RXPRT_EVENT(xprtrdma_noreps); | ||
| 852 | |||
| 853 | /** | 883 | /** |
| 854 | ** Callback events | 884 | ** Callback events |
| 855 | **/ | 885 | **/ |
