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
Showing the changes to include/trace (1 of 16 files). Show all
Unified · Split
| @@ -528,24 +528,54 @@ TRACE_EVENT(xprtrdma_post_send, · 527 unmodified lines | ||
| 528 | 528 | |
| 529 | 529 | TRACE_EVENT(xprtrdma_post_recv, |
| 530 | 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 | 553 | int status |
| 533 | 554 | ), |
| 534 | 555 | |
| 535 | − TP_ARGS(rep, status), | |
| 556 | + TP_ARGS(r_xprt, count, status), | |
| 536 | 557 | |
| 537 | 558 | TP_STRUCT__entry( |
| 538 | − __field(const void *, rep) | |
| 559 | + __field(const void *, r_xprt) | |
| 560 | + __field(unsigned int, count) | |
| 539 | 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 | 567 | TP_fast_assign( |
| 543 | − __entry->rep = rep; | |
| 568 | + __entry->r_xprt = r_xprt; | |
| 569 | + __entry->count = count; | |
| 544 | 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", | |
| 548 | − __entry->rep, __entry->status | |
| 576 | + TP_printk("peer=[%s]:%s r_xprt=%p: %u new recvs, %d active (rc %d)", | |
| 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, · 32 unmodified lines | ||
| 584 | 614 | |
| 585 | 615 | TRACE_EVENT(xprtrdma_wc_receive, |
| 586 | 616 | TP_PROTO( |
| 587 | − const struct rpcrdma_rep *rep, | |
| 588 | 617 | const struct ib_wc *wc |
| 589 | 618 | ), |
| 590 | 619 | |
| 591 | − TP_ARGS(rep, wc), | |
| 620 | + TP_ARGS(wc), | |
| 592 | 621 | |
| 593 | 622 | TP_STRUCT__entry( |
| 594 | − __field(const void *, rep) | |
| 595 | − __field(unsigned int, byte_len) | |
| 623 | + __field(const void *, cqe) | |
| 624 | + __field(u32, byte_len) | |
| 596 | 625 | __field(unsigned int, status) |
| 597 | − __field(unsigned int, vendor_err) | |
| 626 | + __field(u32, vendor_err) | |
| 598 | 627 | ), |
| 599 | 628 | |
| 600 | 629 | TP_fast_assign( |
| 601 | − __entry->rep = rep; | |
| 602 | − __entry->byte_len = wc->byte_len; | |
| 630 | + __entry->cqe = wc->wr_cqe; | |
| 603 | 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)", | |
| 608 | − __entry->rep, __entry->byte_len, | |
| 641 | + TP_printk("cqe=%p %u bytes: %s (%u/0x%x)", | |
| 642 | + __entry->cqe, __entry->byte_len, | |
| 609 | 643 | rdma_show_wc_status(__entry->status), |
| 610 | 644 | __entry->status, __entry->vendor_err |
| 611 | 645 | ) |
| @@ -616,6 +650,7 @@ DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li); · 4 unmodified lines | ||
| 616 | 650 | DEFINE_FRWR_DONE_EVENT(xprtrdma_wc_li_wake); |
| 617 | 651 | |
| 618 | 652 | DEFINE_MR_EVENT(xprtrdma_localinv); |
| 653 | +DEFINE_MR_EVENT(xprtrdma_dma_map); | |
| 619 | 654 | DEFINE_MR_EVENT(xprtrdma_dma_unmap); |
| 620 | 655 | DEFINE_MR_EVENT(xprtrdma_remoteinv); |
| 621 | 656 | DEFINE_MR_EVENT(xprtrdma_recover_mr); |
| @@ -799,7 +834,6 @@ TRACE_EVENT(xprtrdma_allocate, · 177 unmodified lines | ||
| 799 | 834 | __field(unsigned int, task_id) |
| 800 | 835 | __field(unsigned int, client_id) |
| 801 | 836 | __field(const void *, req) |
| 802 | − __field(const void *, rep) | |
| 803 | 837 | __field(size_t, callsize) |
| 804 | 838 | __field(size_t, rcvsize) |
| 805 | 839 | ), |
| @@ -808,15 +842,13 @@ TRACE_EVENT(xprtrdma_allocate, · 2 unmodified lines | ||
| 808 | 842 | __entry->task_id = task->tk_pid; |
| 809 | 843 | __entry->client_id = task->tk_client->cl_clid; |
| 810 | 844 | __entry->req = req; |
| 811 | − __entry->rep = req ? req->rl_reply : NULL; | |
| 812 | 845 | __entry->callsize = task->tk_rqstp->rq_callsize; |
| 813 | 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 | 850 | __entry->task_id, __entry->client_id, |
| 818 | − __entry->req, __entry->rep, | |
| 819 | − __entry->callsize, __entry->rcvsize | |
| 851 | + __entry->req, __entry->callsize, __entry->rcvsize | |
| 820 | 852 | ) |
| 821 | 853 | ); |
| 822 | 854 | |
| @@ -848,8 +880,6 @@ TRACE_EVENT(xprtrdma_rpc_done, · 25 unmodified lines | ||
| 848 | 880 | ) |
| 849 | 881 | ); |
| 850 | 882 | |
| 851 | −DEFINE_RXPRT_EVENT(xprtrdma_noreps); | |
| 852 | − | |
| 853 | 883 | /** |
| 854 | 884 | ** Callback events |
| 855 | 885 | **/ |