Merge tag 'nfsd-5.5' of git://linux-nfs.org/~bfields/linux
[linux-2.6-microblaze.git] / include / trace / events / rpcrdma.h
index 9dd7680..1879058 100644 (file)
@@ -85,6 +85,44 @@ DECLARE_EVENT_CLASS(xprtrdma_rxprt,
                                ),                                      \
                                TP_ARGS(r_xprt))
 
+DECLARE_EVENT_CLASS(xprtrdma_connect_class,
+       TP_PROTO(
+               const struct rpcrdma_xprt *r_xprt,
+               int rc
+       ),
+
+       TP_ARGS(r_xprt, rc),
+
+       TP_STRUCT__entry(
+               __field(const void *, r_xprt)
+               __field(int, rc)
+               __field(int, connect_status)
+               __string(addr, rpcrdma_addrstr(r_xprt))
+               __string(port, rpcrdma_portstr(r_xprt))
+       ),
+
+       TP_fast_assign(
+               __entry->r_xprt = r_xprt;
+               __entry->rc = rc;
+               __entry->connect_status = r_xprt->rx_ep.rep_connected;
+               __assign_str(addr, rpcrdma_addrstr(r_xprt));
+               __assign_str(port, rpcrdma_portstr(r_xprt));
+       ),
+
+       TP_printk("peer=[%s]:%s r_xprt=%p: rc=%d connect status=%d",
+               __get_str(addr), __get_str(port), __entry->r_xprt,
+               __entry->rc, __entry->connect_status
+       )
+);
+
+#define DEFINE_CONN_EVENT(name)                                                \
+               DEFINE_EVENT(xprtrdma_connect_class, xprtrdma_##name,   \
+                               TP_PROTO(                               \
+                                       const struct rpcrdma_xprt *r_xprt, \
+                                       int rc                          \
+                               ),                                      \
+                               TP_ARGS(r_xprt, rc))
+
 DECLARE_EVENT_CLASS(xprtrdma_rdch_event,
        TP_PROTO(
                const struct rpc_task *task,
@@ -333,47 +371,81 @@ TRACE_EVENT(xprtrdma_cm_event,
        )
 );
 
-TRACE_EVENT(xprtrdma_disconnect,
+TRACE_EVENT(xprtrdma_inline_thresh,
        TP_PROTO(
-               const struct rpcrdma_xprt *r_xprt,
-               int status
+               const struct rpcrdma_xprt *r_xprt
        ),
 
-       TP_ARGS(r_xprt, status),
+       TP_ARGS(r_xprt),
 
        TP_STRUCT__entry(
                __field(const void *, r_xprt)
-               __field(int, status)
-               __field(int, connected)
+               __field(unsigned int, inline_send)
+               __field(unsigned int, inline_recv)
+               __field(unsigned int, max_send)
+               __field(unsigned int, max_recv)
                __string(addr, rpcrdma_addrstr(r_xprt))
                __string(port, rpcrdma_portstr(r_xprt))
        ),
 
        TP_fast_assign(
+               const struct rpcrdma_ep *ep = &r_xprt->rx_ep;
+
                __entry->r_xprt = r_xprt;
-               __entry->status = status;
-               __entry->connected = r_xprt->rx_ep.rep_connected;
+               __entry->inline_send = ep->rep_inline_send;
+               __entry->inline_recv = ep->rep_inline_recv;
+               __entry->max_send = ep->rep_max_inline_send;
+               __entry->max_recv = ep->rep_max_inline_recv;
                __assign_str(addr, rpcrdma_addrstr(r_xprt));
                __assign_str(port, rpcrdma_portstr(r_xprt));
        ),
 
-       TP_printk("peer=[%s]:%s r_xprt=%p: status=%d %sconnected",
-               __get_str(addr), __get_str(port),
-               __entry->r_xprt, __entry->status,
-               __entry->connected == 1 ? "still " : "dis"
+       TP_printk("peer=[%s]:%s r_xprt=%p neg send/recv=%u/%u, calc send/recv=%u/%u",
+               __get_str(addr), __get_str(port), __entry->r_xprt,
+               __entry->inline_send, __entry->inline_recv,
+               __entry->max_send, __entry->max_recv
        )
 );
 
-DEFINE_RXPRT_EVENT(xprtrdma_conn_start);
-DEFINE_RXPRT_EVENT(xprtrdma_conn_tout);
+DEFINE_CONN_EVENT(connect);
+DEFINE_CONN_EVENT(disconnect);
+
 DEFINE_RXPRT_EVENT(xprtrdma_create);
 DEFINE_RXPRT_EVENT(xprtrdma_op_destroy);
 DEFINE_RXPRT_EVENT(xprtrdma_remove);
 DEFINE_RXPRT_EVENT(xprtrdma_reinsert);
-DEFINE_RXPRT_EVENT(xprtrdma_reconnect);
 DEFINE_RXPRT_EVENT(xprtrdma_op_inject_dsc);
 DEFINE_RXPRT_EVENT(xprtrdma_op_close);
-DEFINE_RXPRT_EVENT(xprtrdma_op_connect);
+DEFINE_RXPRT_EVENT(xprtrdma_op_setport);
+
+TRACE_EVENT(xprtrdma_op_connect,
+       TP_PROTO(
+               const struct rpcrdma_xprt *r_xprt,
+               unsigned long delay
+       ),
+
+       TP_ARGS(r_xprt, delay),
+
+       TP_STRUCT__entry(
+               __field(const void *, r_xprt)
+               __field(unsigned long, delay)
+               __string(addr, rpcrdma_addrstr(r_xprt))
+               __string(port, rpcrdma_portstr(r_xprt))
+       ),
+
+       TP_fast_assign(
+               __entry->r_xprt = r_xprt;
+               __entry->delay = delay;
+               __assign_str(addr, rpcrdma_addrstr(r_xprt));
+               __assign_str(port, rpcrdma_portstr(r_xprt));
+       ),
+
+       TP_printk("peer=[%s]:%s r_xprt=%p delay=%lu",
+               __get_str(addr), __get_str(port), __entry->r_xprt,
+               __entry->delay
+       )
+);
+
 
 TRACE_EVENT(xprtrdma_op_set_cto,
        TP_PROTO(
@@ -532,6 +604,8 @@ DEFINE_WRCH_EVENT(write);
 DEFINE_WRCH_EVENT(reply);
 
 TRACE_DEFINE_ENUM(rpcrdma_noch);
+TRACE_DEFINE_ENUM(rpcrdma_noch_pullup);
+TRACE_DEFINE_ENUM(rpcrdma_noch_mapped);
 TRACE_DEFINE_ENUM(rpcrdma_readch);
 TRACE_DEFINE_ENUM(rpcrdma_areadch);
 TRACE_DEFINE_ENUM(rpcrdma_writech);
@@ -540,6 +614,8 @@ TRACE_DEFINE_ENUM(rpcrdma_replych);
 #define xprtrdma_show_chunktype(x)                                     \
                __print_symbolic(x,                                     \
                                { rpcrdma_noch, "inline" },             \
+                               { rpcrdma_noch_pullup, "pullup" },      \
+                               { rpcrdma_noch_mapped, "mapped" },      \
                                { rpcrdma_readch, "read list" },        \
                                { rpcrdma_areadch, "*read list" },      \
                                { rpcrdma_writech, "write list" },      \
@@ -667,9 +743,8 @@ TRACE_EVENT(xprtrdma_post_send,
                __entry->client_id = rqst->rq_task->tk_client ?
                                     rqst->rq_task->tk_client->cl_clid : -1;
                __entry->req = req;
-               __entry->num_sge = req->rl_sendctx->sc_wr.num_sge;
-               __entry->signaled = req->rl_sendctx->sc_wr.send_flags &
-                                   IB_SEND_SIGNALED;
+               __entry->num_sge = req->rl_wr.num_sge;
+               __entry->signaled = req->rl_wr.send_flags & IB_SEND_SIGNALED;
                __entry->status = status;
        ),
 
@@ -735,6 +810,31 @@ TRACE_EVENT(xprtrdma_post_recvs,
        )
 );
 
+TRACE_EVENT(xprtrdma_post_linv,
+       TP_PROTO(
+               const struct rpcrdma_req *req,
+               int status
+       ),
+
+       TP_ARGS(req, status),
+
+       TP_STRUCT__entry(
+               __field(const void *, req)
+               __field(int, status)
+               __field(u32, xid)
+       ),
+
+       TP_fast_assign(
+               __entry->req = req;
+               __entry->status = status;
+               __entry->xid = be32_to_cpu(req->rl_slot.rq_xid);
+       ),
+
+       TP_printk("req=%p xid=0x%08x status=%d",
+               __entry->req, __entry->xid, __entry->status
+       )
+);
+
 /**
  ** Completion events
  **/
@@ -1021,66 +1121,32 @@ DEFINE_REPLY_EVENT(xprtrdma_reply_hdr);
 TRACE_EVENT(xprtrdma_fixup,
        TP_PROTO(
                const struct rpc_rqst *rqst,
-               int len,
-               int hdrlen
+               unsigned long fixup
        ),
 
-       TP_ARGS(rqst, len, hdrlen),
+       TP_ARGS(rqst, fixup),
 
        TP_STRUCT__entry(
                __field(unsigned int, task_id)
                __field(unsigned int, client_id)
-               __field(const void *, base)
-               __field(int, len)
-               __field(int, hdrlen)
-       ),
-
-       TP_fast_assign(
-               __entry->task_id = rqst->rq_task->tk_pid;
-               __entry->client_id = rqst->rq_task->tk_client->cl_clid;
-               __entry->base = rqst->rq_rcv_buf.head[0].iov_base;
-               __entry->len = len;
-               __entry->hdrlen = hdrlen;
-       ),
-
-       TP_printk("task:%u@%u base=%p len=%d hdrlen=%d",
-               __entry->task_id, __entry->client_id,
-               __entry->base, __entry->len, __entry->hdrlen
-       )
-);
-
-TRACE_EVENT(xprtrdma_fixup_pg,
-       TP_PROTO(
-               const struct rpc_rqst *rqst,
-               int pageno,
-               const void *pos,
-               int len,
-               int curlen
-       ),
-
-       TP_ARGS(rqst, pageno, pos, len, curlen),
-
-       TP_STRUCT__entry(
-               __field(unsigned int, task_id)
-               __field(unsigned int, client_id)
-               __field(const void *, pos)
-               __field(int, pageno)
-               __field(int, len)
-               __field(int, curlen)
+               __field(unsigned long, fixup)
+               __field(size_t, headlen)
+               __field(unsigned int, pagelen)
+               __field(size_t, taillen)
        ),
 
        TP_fast_assign(
                __entry->task_id = rqst->rq_task->tk_pid;
                __entry->client_id = rqst->rq_task->tk_client->cl_clid;
-               __entry->pos = pos;
-               __entry->pageno = pageno;
-               __entry->len = len;
-               __entry->curlen = curlen;
+               __entry->fixup = fixup;
+               __entry->headlen = rqst->rq_rcv_buf.head[0].iov_len;
+               __entry->pagelen = rqst->rq_rcv_buf.page_len;
+               __entry->taillen = rqst->rq_rcv_buf.tail[0].iov_len;
        ),
 
-       TP_printk("task:%u@%u pageno=%d pos=%p len=%d curlen=%d",
-               __entry->task_id, __entry->client_id,
-               __entry->pageno, __entry->pos, __entry->len, __entry->curlen
+       TP_printk("task:%u@%u fixup=%lu xdr=%zu/%u/%zu",
+               __entry->task_id, __entry->client_id, __entry->fixup,
+               __entry->headlen, __entry->pagelen, __entry->taillen
        )
 );