root/include/trace/events/sunrpc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #undef TRACE_SYSTEM
   3 #define TRACE_SYSTEM sunrpc
   4 
   5 #if !defined(_TRACE_SUNRPC_H) || defined(TRACE_HEADER_MULTI_READ)
   6 #define _TRACE_SUNRPC_H
   7 
   8 #include <linux/sunrpc/sched.h>
   9 #include <linux/sunrpc/clnt.h>
  10 #include <linux/sunrpc/svc.h>
  11 #include <linux/sunrpc/xprtsock.h>
  12 #include <linux/sunrpc/svc_xprt.h>
  13 #include <net/tcp_states.h>
  14 #include <linux/net.h>
  15 #include <linux/tracepoint.h>
  16 
  17 DECLARE_EVENT_CLASS(rpc_task_status,
  18 
  19         TP_PROTO(const struct rpc_task *task),
  20 
  21         TP_ARGS(task),
  22 
  23         TP_STRUCT__entry(
  24                 __field(unsigned int, task_id)
  25                 __field(unsigned int, client_id)
  26                 __field(int, status)
  27         ),
  28 
  29         TP_fast_assign(
  30                 __entry->task_id = task->tk_pid;
  31                 __entry->client_id = task->tk_client->cl_clid;
  32                 __entry->status = task->tk_status;
  33         ),
  34 
  35         TP_printk("task:%u@%u status=%d",
  36                 __entry->task_id, __entry->client_id,
  37                 __entry->status)
  38 );
  39 #define DEFINE_RPC_STATUS_EVENT(name) \
  40         DEFINE_EVENT(rpc_task_status, rpc_##name##_status, \
  41                         TP_PROTO( \
  42                                 const struct rpc_task *task \
  43                         ), \
  44                         TP_ARGS(task))
  45 
  46 DEFINE_RPC_STATUS_EVENT(call);
  47 DEFINE_RPC_STATUS_EVENT(bind);
  48 DEFINE_RPC_STATUS_EVENT(connect);
  49 
  50 TRACE_EVENT(rpc_request,
  51         TP_PROTO(const struct rpc_task *task),
  52 
  53         TP_ARGS(task),
  54 
  55         TP_STRUCT__entry(
  56                 __field(unsigned int, task_id)
  57                 __field(unsigned int, client_id)
  58                 __field(int, version)
  59                 __field(bool, async)
  60                 __string(progname, task->tk_client->cl_program->name)
  61                 __string(procname, rpc_proc_name(task))
  62         ),
  63 
  64         TP_fast_assign(
  65                 __entry->task_id = task->tk_pid;
  66                 __entry->client_id = task->tk_client->cl_clid;
  67                 __entry->version = task->tk_client->cl_vers;
  68                 __entry->async = RPC_IS_ASYNC(task);
  69                 __assign_str(progname, task->tk_client->cl_program->name)
  70                 __assign_str(procname, rpc_proc_name(task))
  71         ),
  72 
  73         TP_printk("task:%u@%u %sv%d %s (%ssync)",
  74                 __entry->task_id, __entry->client_id,
  75                 __get_str(progname), __entry->version,
  76                 __get_str(procname), __entry->async ? "a": ""
  77                 )
  78 );
  79 
  80 TRACE_DEFINE_ENUM(RPC_TASK_ASYNC);
  81 TRACE_DEFINE_ENUM(RPC_TASK_SWAPPER);
  82 TRACE_DEFINE_ENUM(RPC_CALL_MAJORSEEN);
  83 TRACE_DEFINE_ENUM(RPC_TASK_ROOTCREDS);
  84 TRACE_DEFINE_ENUM(RPC_TASK_DYNAMIC);
  85 TRACE_DEFINE_ENUM(RPC_TASK_SOFT);
  86 TRACE_DEFINE_ENUM(RPC_TASK_SOFTCONN);
  87 TRACE_DEFINE_ENUM(RPC_TASK_SENT);
  88 TRACE_DEFINE_ENUM(RPC_TASK_TIMEOUT);
  89 TRACE_DEFINE_ENUM(RPC_TASK_NOCONNECT);
  90 TRACE_DEFINE_ENUM(RPC_TASK_NO_RETRANS_TIMEOUT);
  91 
  92 #define rpc_show_task_flags(flags)                                      \
  93         __print_flags(flags, "|",                                       \
  94                 { RPC_TASK_ASYNC, "ASYNC" },                            \
  95                 { RPC_TASK_SWAPPER, "SWAPPER" },                        \
  96                 { RPC_CALL_MAJORSEEN, "MAJORSEEN" },                    \
  97                 { RPC_TASK_ROOTCREDS, "ROOTCREDS" },                    \
  98                 { RPC_TASK_DYNAMIC, "DYNAMIC" },                        \
  99                 { RPC_TASK_SOFT, "SOFT" },                              \
 100                 { RPC_TASK_SOFTCONN, "SOFTCONN" },                      \
 101                 { RPC_TASK_SENT, "SENT" },                              \
 102                 { RPC_TASK_TIMEOUT, "TIMEOUT" },                        \
 103                 { RPC_TASK_NOCONNECT, "NOCONNECT" },                    \
 104                 { RPC_TASK_NO_RETRANS_TIMEOUT, "NORTO" })
 105 
 106 TRACE_DEFINE_ENUM(RPC_TASK_RUNNING);
 107 TRACE_DEFINE_ENUM(RPC_TASK_QUEUED);
 108 TRACE_DEFINE_ENUM(RPC_TASK_ACTIVE);
 109 TRACE_DEFINE_ENUM(RPC_TASK_NEED_XMIT);
 110 TRACE_DEFINE_ENUM(RPC_TASK_NEED_RECV);
 111 TRACE_DEFINE_ENUM(RPC_TASK_MSG_PIN_WAIT);
 112 TRACE_DEFINE_ENUM(RPC_TASK_SIGNALLED);
 113 
 114 #define rpc_show_runstate(flags)                                        \
 115         __print_flags(flags, "|",                                       \
 116                 { (1UL << RPC_TASK_RUNNING), "RUNNING" },               \
 117                 { (1UL << RPC_TASK_QUEUED), "QUEUED" },                 \
 118                 { (1UL << RPC_TASK_ACTIVE), "ACTIVE" },                 \
 119                 { (1UL << RPC_TASK_NEED_XMIT), "NEED_XMIT" },           \
 120                 { (1UL << RPC_TASK_NEED_RECV), "NEED_RECV" },           \
 121                 { (1UL << RPC_TASK_MSG_PIN_WAIT), "MSG_PIN_WAIT" },     \
 122                 { (1UL << RPC_TASK_SIGNALLED), "SIGNALLED" })
 123 
 124 DECLARE_EVENT_CLASS(rpc_task_running,
 125 
 126         TP_PROTO(const struct rpc_task *task, const void *action),
 127 
 128         TP_ARGS(task, action),
 129 
 130         TP_STRUCT__entry(
 131                 __field(unsigned int, task_id)
 132                 __field(unsigned int, client_id)
 133                 __field(const void *, action)
 134                 __field(unsigned long, runstate)
 135                 __field(int, status)
 136                 __field(unsigned short, flags)
 137                 ),
 138 
 139         TP_fast_assign(
 140                 __entry->client_id = task->tk_client ?
 141                                      task->tk_client->cl_clid : -1;
 142                 __entry->task_id = task->tk_pid;
 143                 __entry->action = action;
 144                 __entry->runstate = task->tk_runstate;
 145                 __entry->status = task->tk_status;
 146                 __entry->flags = task->tk_flags;
 147                 ),
 148 
 149         TP_printk("task:%u@%d flags=%s runstate=%s status=%d action=%ps",
 150                 __entry->task_id, __entry->client_id,
 151                 rpc_show_task_flags(__entry->flags),
 152                 rpc_show_runstate(__entry->runstate),
 153                 __entry->status,
 154                 __entry->action
 155                 )
 156 );
 157 #define DEFINE_RPC_RUNNING_EVENT(name) \
 158         DEFINE_EVENT(rpc_task_running, rpc_task_##name, \
 159                         TP_PROTO( \
 160                                 const struct rpc_task *task, \
 161                                 const void *action \
 162                         ), \
 163                         TP_ARGS(task, action))
 164 
 165 DEFINE_RPC_RUNNING_EVENT(begin);
 166 DEFINE_RPC_RUNNING_EVENT(run_action);
 167 DEFINE_RPC_RUNNING_EVENT(complete);
 168 
 169 DECLARE_EVENT_CLASS(rpc_task_queued,
 170 
 171         TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
 172 
 173         TP_ARGS(task, q),
 174 
 175         TP_STRUCT__entry(
 176                 __field(unsigned int, task_id)
 177                 __field(unsigned int, client_id)
 178                 __field(unsigned long, timeout)
 179                 __field(unsigned long, runstate)
 180                 __field(int, status)
 181                 __field(unsigned short, flags)
 182                 __string(q_name, rpc_qname(q))
 183                 ),
 184 
 185         TP_fast_assign(
 186                 __entry->client_id = task->tk_client ?
 187                                      task->tk_client->cl_clid : -1;
 188                 __entry->task_id = task->tk_pid;
 189                 __entry->timeout = rpc_task_timeout(task);
 190                 __entry->runstate = task->tk_runstate;
 191                 __entry->status = task->tk_status;
 192                 __entry->flags = task->tk_flags;
 193                 __assign_str(q_name, rpc_qname(q));
 194                 ),
 195 
 196         TP_printk("task:%u@%d flags=%s runstate=%s status=%d timeout=%lu queue=%s",
 197                 __entry->task_id, __entry->client_id,
 198                 rpc_show_task_flags(__entry->flags),
 199                 rpc_show_runstate(__entry->runstate),
 200                 __entry->status,
 201                 __entry->timeout,
 202                 __get_str(q_name)
 203                 )
 204 );
 205 #define DEFINE_RPC_QUEUED_EVENT(name) \
 206         DEFINE_EVENT(rpc_task_queued, rpc_task_##name, \
 207                         TP_PROTO( \
 208                                 const struct rpc_task *task, \
 209                                 const struct rpc_wait_queue *q \
 210                         ), \
 211                         TP_ARGS(task, q))
 212 
 213 DEFINE_RPC_QUEUED_EVENT(sleep);
 214 DEFINE_RPC_QUEUED_EVENT(wakeup);
 215 
 216 DECLARE_EVENT_CLASS(rpc_failure,
 217 
 218         TP_PROTO(const struct rpc_task *task),
 219 
 220         TP_ARGS(task),
 221 
 222         TP_STRUCT__entry(
 223                 __field(unsigned int, task_id)
 224                 __field(unsigned int, client_id)
 225         ),
 226 
 227         TP_fast_assign(
 228                 __entry->task_id = task->tk_pid;
 229                 __entry->client_id = task->tk_client->cl_clid;
 230         ),
 231 
 232         TP_printk("task:%u@%u",
 233                 __entry->task_id, __entry->client_id)
 234 );
 235 
 236 #define DEFINE_RPC_FAILURE(name)                                        \
 237         DEFINE_EVENT(rpc_failure, rpc_bad_##name,                       \
 238                         TP_PROTO(                                       \
 239                                 const struct rpc_task *task             \
 240                         ),                                              \
 241                         TP_ARGS(task))
 242 
 243 DEFINE_RPC_FAILURE(callhdr);
 244 DEFINE_RPC_FAILURE(verifier);
 245 
 246 DECLARE_EVENT_CLASS(rpc_reply_event,
 247 
 248         TP_PROTO(
 249                 const struct rpc_task *task
 250         ),
 251 
 252         TP_ARGS(task),
 253 
 254         TP_STRUCT__entry(
 255                 __field(unsigned int, task_id)
 256                 __field(unsigned int, client_id)
 257                 __field(u32, xid)
 258                 __string(progname, task->tk_client->cl_program->name)
 259                 __field(u32, version)
 260                 __string(procname, rpc_proc_name(task))
 261                 __string(servername, task->tk_xprt->servername)
 262         ),
 263 
 264         TP_fast_assign(
 265                 __entry->task_id = task->tk_pid;
 266                 __entry->client_id = task->tk_client->cl_clid;
 267                 __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
 268                 __assign_str(progname, task->tk_client->cl_program->name)
 269                 __entry->version = task->tk_client->cl_vers;
 270                 __assign_str(procname, rpc_proc_name(task))
 271                 __assign_str(servername, task->tk_xprt->servername)
 272         ),
 273 
 274         TP_printk("task:%u@%d server=%s xid=0x%08x %sv%d %s",
 275                 __entry->task_id, __entry->client_id, __get_str(servername),
 276                 __entry->xid, __get_str(progname), __entry->version,
 277                 __get_str(procname))
 278 )
 279 
 280 #define DEFINE_RPC_REPLY_EVENT(name)                                    \
 281         DEFINE_EVENT(rpc_reply_event, rpc__##name,                      \
 282                         TP_PROTO(                                       \
 283                                 const struct rpc_task *task             \
 284                         ),                                              \
 285                         TP_ARGS(task))
 286 
 287 DEFINE_RPC_REPLY_EVENT(prog_unavail);
 288 DEFINE_RPC_REPLY_EVENT(prog_mismatch);
 289 DEFINE_RPC_REPLY_EVENT(proc_unavail);
 290 DEFINE_RPC_REPLY_EVENT(garbage_args);
 291 DEFINE_RPC_REPLY_EVENT(unparsable);
 292 DEFINE_RPC_REPLY_EVENT(mismatch);
 293 DEFINE_RPC_REPLY_EVENT(stale_creds);
 294 DEFINE_RPC_REPLY_EVENT(bad_creds);
 295 DEFINE_RPC_REPLY_EVENT(auth_tooweak);
 296 
 297 TRACE_EVENT(rpc_stats_latency,
 298 
 299         TP_PROTO(
 300                 const struct rpc_task *task,
 301                 ktime_t backlog,
 302                 ktime_t rtt,
 303                 ktime_t execute
 304         ),
 305 
 306         TP_ARGS(task, backlog, rtt, execute),
 307 
 308         TP_STRUCT__entry(
 309                 __field(unsigned int, task_id)
 310                 __field(unsigned int, client_id)
 311                 __field(u32, xid)
 312                 __field(int, version)
 313                 __string(progname, task->tk_client->cl_program->name)
 314                 __string(procname, rpc_proc_name(task))
 315                 __field(unsigned long, backlog)
 316                 __field(unsigned long, rtt)
 317                 __field(unsigned long, execute)
 318         ),
 319 
 320         TP_fast_assign(
 321                 __entry->client_id = task->tk_client->cl_clid;
 322                 __entry->task_id = task->tk_pid;
 323                 __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
 324                 __entry->version = task->tk_client->cl_vers;
 325                 __assign_str(progname, task->tk_client->cl_program->name)
 326                 __assign_str(procname, rpc_proc_name(task))
 327                 __entry->backlog = ktime_to_us(backlog);
 328                 __entry->rtt = ktime_to_us(rtt);
 329                 __entry->execute = ktime_to_us(execute);
 330         ),
 331 
 332         TP_printk("task:%u@%d xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu",
 333                 __entry->task_id, __entry->client_id, __entry->xid,
 334                 __get_str(progname), __entry->version, __get_str(procname),
 335                 __entry->backlog, __entry->rtt, __entry->execute)
 336 );
 337 
 338 TRACE_EVENT(rpc_xdr_overflow,
 339         TP_PROTO(
 340                 const struct xdr_stream *xdr,
 341                 size_t requested
 342         ),
 343 
 344         TP_ARGS(xdr, requested),
 345 
 346         TP_STRUCT__entry(
 347                 __field(unsigned int, task_id)
 348                 __field(unsigned int, client_id)
 349                 __field(int, version)
 350                 __field(size_t, requested)
 351                 __field(const void *, end)
 352                 __field(const void *, p)
 353                 __field(const void *, head_base)
 354                 __field(size_t, head_len)
 355                 __field(const void *, tail_base)
 356                 __field(size_t, tail_len)
 357                 __field(unsigned int, page_len)
 358                 __field(unsigned int, len)
 359                 __string(progname,
 360                          xdr->rqst->rq_task->tk_client->cl_program->name)
 361                 __string(procedure,
 362                          xdr->rqst->rq_task->tk_msg.rpc_proc->p_name)
 363         ),
 364 
 365         TP_fast_assign(
 366                 if (xdr->rqst) {
 367                         const struct rpc_task *task = xdr->rqst->rq_task;
 368 
 369                         __entry->task_id = task->tk_pid;
 370                         __entry->client_id = task->tk_client->cl_clid;
 371                         __assign_str(progname,
 372                                      task->tk_client->cl_program->name)
 373                         __entry->version = task->tk_client->cl_vers;
 374                         __assign_str(procedure, task->tk_msg.rpc_proc->p_name)
 375                 } else {
 376                         __entry->task_id = 0;
 377                         __entry->client_id = 0;
 378                         __assign_str(progname, "unknown")
 379                         __entry->version = 0;
 380                         __assign_str(procedure, "unknown")
 381                 }
 382                 __entry->requested = requested;
 383                 __entry->end = xdr->end;
 384                 __entry->p = xdr->p;
 385                 __entry->head_base = xdr->buf->head[0].iov_base,
 386                 __entry->head_len = xdr->buf->head[0].iov_len,
 387                 __entry->page_len = xdr->buf->page_len,
 388                 __entry->tail_base = xdr->buf->tail[0].iov_base,
 389                 __entry->tail_len = xdr->buf->tail[0].iov_len,
 390                 __entry->len = xdr->buf->len;
 391         ),
 392 
 393         TP_printk(
 394                 "task:%u@%u %sv%d %s requested=%zu p=%p end=%p xdr=[%p,%zu]/%u/[%p,%zu]/%u\n",
 395                 __entry->task_id, __entry->client_id,
 396                 __get_str(progname), __entry->version, __get_str(procedure),
 397                 __entry->requested, __entry->p, __entry->end,
 398                 __entry->head_base, __entry->head_len,
 399                 __entry->page_len,
 400                 __entry->tail_base, __entry->tail_len,
 401                 __entry->len
 402         )
 403 );
 404 
 405 TRACE_EVENT(rpc_xdr_alignment,
 406         TP_PROTO(
 407                 const struct xdr_stream *xdr,
 408                 size_t offset,
 409                 unsigned int copied
 410         ),
 411 
 412         TP_ARGS(xdr, offset, copied),
 413 
 414         TP_STRUCT__entry(
 415                 __field(unsigned int, task_id)
 416                 __field(unsigned int, client_id)
 417                 __field(int, version)
 418                 __field(size_t, offset)
 419                 __field(unsigned int, copied)
 420                 __field(const void *, head_base)
 421                 __field(size_t, head_len)
 422                 __field(const void *, tail_base)
 423                 __field(size_t, tail_len)
 424                 __field(unsigned int, page_len)
 425                 __field(unsigned int, len)
 426                 __string(progname,
 427                          xdr->rqst->rq_task->tk_client->cl_program->name)
 428                 __string(procedure,
 429                          xdr->rqst->rq_task->tk_msg.rpc_proc->p_name)
 430         ),
 431 
 432         TP_fast_assign(
 433                 const struct rpc_task *task = xdr->rqst->rq_task;
 434 
 435                 __entry->task_id = task->tk_pid;
 436                 __entry->client_id = task->tk_client->cl_clid;
 437                 __assign_str(progname,
 438                              task->tk_client->cl_program->name)
 439                 __entry->version = task->tk_client->cl_vers;
 440                 __assign_str(procedure, task->tk_msg.rpc_proc->p_name)
 441 
 442                 __entry->offset = offset;
 443                 __entry->copied = copied;
 444                 __entry->head_base = xdr->buf->head[0].iov_base,
 445                 __entry->head_len = xdr->buf->head[0].iov_len,
 446                 __entry->page_len = xdr->buf->page_len,
 447                 __entry->tail_base = xdr->buf->tail[0].iov_base,
 448                 __entry->tail_len = xdr->buf->tail[0].iov_len,
 449                 __entry->len = xdr->buf->len;
 450         ),
 451 
 452         TP_printk(
 453                 "task:%u@%u %sv%d %s offset=%zu copied=%u xdr=[%p,%zu]/%u/[%p,%zu]/%u\n",
 454                 __entry->task_id, __entry->client_id,
 455                 __get_str(progname), __entry->version, __get_str(procedure),
 456                 __entry->offset, __entry->copied,
 457                 __entry->head_base, __entry->head_len,
 458                 __entry->page_len,
 459                 __entry->tail_base, __entry->tail_len,
 460                 __entry->len
 461         )
 462 );
 463 
 464 TRACE_EVENT(rpc_reply_pages,
 465         TP_PROTO(
 466                 const struct rpc_rqst *req
 467         ),
 468 
 469         TP_ARGS(req),
 470 
 471         TP_STRUCT__entry(
 472                 __field(unsigned int, task_id)
 473                 __field(unsigned int, client_id)
 474                 __field(const void *, head_base)
 475                 __field(size_t, head_len)
 476                 __field(const void *, tail_base)
 477                 __field(size_t, tail_len)
 478                 __field(unsigned int, page_len)
 479         ),
 480 
 481         TP_fast_assign(
 482                 __entry->task_id = req->rq_task->tk_pid;
 483                 __entry->client_id = req->rq_task->tk_client->cl_clid;
 484 
 485                 __entry->head_base = req->rq_rcv_buf.head[0].iov_base;
 486                 __entry->head_len = req->rq_rcv_buf.head[0].iov_len;
 487                 __entry->page_len = req->rq_rcv_buf.page_len;
 488                 __entry->tail_base = req->rq_rcv_buf.tail[0].iov_base;
 489                 __entry->tail_len = req->rq_rcv_buf.tail[0].iov_len;
 490         ),
 491 
 492         TP_printk(
 493                 "task:%u@%u xdr=[%p,%zu]/%u/[%p,%zu]\n",
 494                 __entry->task_id, __entry->client_id,
 495                 __entry->head_base, __entry->head_len,
 496                 __entry->page_len,
 497                 __entry->tail_base, __entry->tail_len
 498         )
 499 );
 500 
 501 /*
 502  * First define the enums in the below macros to be exported to userspace
 503  * via TRACE_DEFINE_ENUM().
 504  */
 505 #undef EM
 506 #undef EMe
 507 #define EM(a, b)        TRACE_DEFINE_ENUM(a);
 508 #define EMe(a, b)       TRACE_DEFINE_ENUM(a);
 509 
 510 #define RPC_SHOW_SOCKET                         \
 511         EM( SS_FREE, "FREE" )                   \
 512         EM( SS_UNCONNECTED, "UNCONNECTED" )     \
 513         EM( SS_CONNECTING, "CONNECTING," )      \
 514         EM( SS_CONNECTED, "CONNECTED," )        \
 515         EMe(SS_DISCONNECTING, "DISCONNECTING" )
 516 
 517 #define rpc_show_socket_state(state) \
 518         __print_symbolic(state, RPC_SHOW_SOCKET)
 519 
 520 RPC_SHOW_SOCKET
 521 
 522 #define RPC_SHOW_SOCK                           \
 523         EM( TCP_ESTABLISHED, "ESTABLISHED" )    \
 524         EM( TCP_SYN_SENT, "SYN_SENT" )          \
 525         EM( TCP_SYN_RECV, "SYN_RECV" )          \
 526         EM( TCP_FIN_WAIT1, "FIN_WAIT1" )        \
 527         EM( TCP_FIN_WAIT2, "FIN_WAIT2" )        \
 528         EM( TCP_TIME_WAIT, "TIME_WAIT" )        \
 529         EM( TCP_CLOSE, "CLOSE" )                \
 530         EM( TCP_CLOSE_WAIT, "CLOSE_WAIT" )      \
 531         EM( TCP_LAST_ACK, "LAST_ACK" )          \
 532         EM( TCP_LISTEN, "LISTEN" )              \
 533         EMe( TCP_CLOSING, "CLOSING" )
 534 
 535 #define rpc_show_sock_state(state) \
 536         __print_symbolic(state, RPC_SHOW_SOCK)
 537 
 538 RPC_SHOW_SOCK
 539 
 540 /*
 541  * Now redefine the EM() and EMe() macros to map the enums to the strings
 542  * that will be printed in the output.
 543  */
 544 #undef EM
 545 #undef EMe
 546 #define EM(a, b)        {a, b},
 547 #define EMe(a, b)       {a, b}
 548 
 549 DECLARE_EVENT_CLASS(xs_socket_event,
 550 
 551                 TP_PROTO(
 552                         struct rpc_xprt *xprt,
 553                         struct socket *socket
 554                 ),
 555 
 556                 TP_ARGS(xprt, socket),
 557 
 558                 TP_STRUCT__entry(
 559                         __field(unsigned int, socket_state)
 560                         __field(unsigned int, sock_state)
 561                         __field(unsigned long long, ino)
 562                         __string(dstaddr,
 563                                 xprt->address_strings[RPC_DISPLAY_ADDR])
 564                         __string(dstport,
 565                                 xprt->address_strings[RPC_DISPLAY_PORT])
 566                 ),
 567 
 568                 TP_fast_assign(
 569                         struct inode *inode = SOCK_INODE(socket);
 570                         __entry->socket_state = socket->state;
 571                         __entry->sock_state = socket->sk->sk_state;
 572                         __entry->ino = (unsigned long long)inode->i_ino;
 573                         __assign_str(dstaddr,
 574                                 xprt->address_strings[RPC_DISPLAY_ADDR]);
 575                         __assign_str(dstport,
 576                                 xprt->address_strings[RPC_DISPLAY_PORT]);
 577                 ),
 578 
 579                 TP_printk(
 580                         "socket:[%llu] dstaddr=%s/%s "
 581                         "state=%u (%s) sk_state=%u (%s)",
 582                         __entry->ino, __get_str(dstaddr), __get_str(dstport),
 583                         __entry->socket_state,
 584                         rpc_show_socket_state(__entry->socket_state),
 585                         __entry->sock_state,
 586                         rpc_show_sock_state(__entry->sock_state)
 587                 )
 588 );
 589 #define DEFINE_RPC_SOCKET_EVENT(name) \
 590         DEFINE_EVENT(xs_socket_event, name, \
 591                         TP_PROTO( \
 592                                 struct rpc_xprt *xprt, \
 593                                 struct socket *socket \
 594                         ), \
 595                         TP_ARGS(xprt, socket))
 596 
 597 DECLARE_EVENT_CLASS(xs_socket_event_done,
 598 
 599                 TP_PROTO(
 600                         struct rpc_xprt *xprt,
 601                         struct socket *socket,
 602                         int error
 603                 ),
 604 
 605                 TP_ARGS(xprt, socket, error),
 606 
 607                 TP_STRUCT__entry(
 608                         __field(int, error)
 609                         __field(unsigned int, socket_state)
 610                         __field(unsigned int, sock_state)
 611                         __field(unsigned long long, ino)
 612                         __string(dstaddr,
 613                                 xprt->address_strings[RPC_DISPLAY_ADDR])
 614                         __string(dstport,
 615                                 xprt->address_strings[RPC_DISPLAY_PORT])
 616                 ),
 617 
 618                 TP_fast_assign(
 619                         struct inode *inode = SOCK_INODE(socket);
 620                         __entry->socket_state = socket->state;
 621                         __entry->sock_state = socket->sk->sk_state;
 622                         __entry->ino = (unsigned long long)inode->i_ino;
 623                         __entry->error = error;
 624                         __assign_str(dstaddr,
 625                                 xprt->address_strings[RPC_DISPLAY_ADDR]);
 626                         __assign_str(dstport,
 627                                 xprt->address_strings[RPC_DISPLAY_PORT]);
 628                 ),
 629 
 630                 TP_printk(
 631                         "error=%d socket:[%llu] dstaddr=%s/%s "
 632                         "state=%u (%s) sk_state=%u (%s)",
 633                         __entry->error,
 634                         __entry->ino, __get_str(dstaddr), __get_str(dstport),
 635                         __entry->socket_state,
 636                         rpc_show_socket_state(__entry->socket_state),
 637                         __entry->sock_state,
 638                         rpc_show_sock_state(__entry->sock_state)
 639                 )
 640 );
 641 #define DEFINE_RPC_SOCKET_EVENT_DONE(name) \
 642         DEFINE_EVENT(xs_socket_event_done, name, \
 643                         TP_PROTO( \
 644                                 struct rpc_xprt *xprt, \
 645                                 struct socket *socket, \
 646                                 int error \
 647                         ), \
 648                         TP_ARGS(xprt, socket, error))
 649 
 650 DEFINE_RPC_SOCKET_EVENT(rpc_socket_state_change);
 651 DEFINE_RPC_SOCKET_EVENT_DONE(rpc_socket_connect);
 652 DEFINE_RPC_SOCKET_EVENT_DONE(rpc_socket_error);
 653 DEFINE_RPC_SOCKET_EVENT_DONE(rpc_socket_reset_connection);
 654 DEFINE_RPC_SOCKET_EVENT(rpc_socket_close);
 655 DEFINE_RPC_SOCKET_EVENT(rpc_socket_shutdown);
 656 
 657 DECLARE_EVENT_CLASS(rpc_xprt_event,
 658         TP_PROTO(
 659                 const struct rpc_xprt *xprt,
 660                 __be32 xid,
 661                 int status
 662         ),
 663 
 664         TP_ARGS(xprt, xid, status),
 665 
 666         TP_STRUCT__entry(
 667                 __field(u32, xid)
 668                 __field(int, status)
 669                 __string(addr, xprt->address_strings[RPC_DISPLAY_ADDR])
 670                 __string(port, xprt->address_strings[RPC_DISPLAY_PORT])
 671         ),
 672 
 673         TP_fast_assign(
 674                 __entry->xid = be32_to_cpu(xid);
 675                 __entry->status = status;
 676                 __assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]);
 677                 __assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]);
 678         ),
 679 
 680         TP_printk("peer=[%s]:%s xid=0x%08x status=%d", __get_str(addr),
 681                         __get_str(port), __entry->xid,
 682                         __entry->status)
 683 );
 684 #define DEFINE_RPC_XPRT_EVENT(name) \
 685         DEFINE_EVENT(rpc_xprt_event, xprt_##name, \
 686                         TP_PROTO( \
 687                                 const struct rpc_xprt *xprt, \
 688                                 __be32 xid, \
 689                                 int status \
 690                         ), \
 691                         TP_ARGS(xprt, xid, status))
 692 
 693 DEFINE_RPC_XPRT_EVENT(timer);
 694 DEFINE_RPC_XPRT_EVENT(lookup_rqst);
 695 DEFINE_RPC_XPRT_EVENT(complete_rqst);
 696 
 697 TRACE_EVENT(xprt_transmit,
 698         TP_PROTO(
 699                 const struct rpc_rqst *rqst,
 700                 int status
 701         ),
 702 
 703         TP_ARGS(rqst, status),
 704 
 705         TP_STRUCT__entry(
 706                 __field(unsigned int, task_id)
 707                 __field(unsigned int, client_id)
 708                 __field(u32, xid)
 709                 __field(u32, seqno)
 710                 __field(int, status)
 711         ),
 712 
 713         TP_fast_assign(
 714                 __entry->task_id = rqst->rq_task->tk_pid;
 715                 __entry->client_id = rqst->rq_task->tk_client ?
 716                         rqst->rq_task->tk_client->cl_clid : -1;
 717                 __entry->xid = be32_to_cpu(rqst->rq_xid);
 718                 __entry->seqno = rqst->rq_seqno;
 719                 __entry->status = status;
 720         ),
 721 
 722         TP_printk(
 723                 "task:%u@%u xid=0x%08x seqno=%u status=%d",
 724                 __entry->task_id, __entry->client_id, __entry->xid,
 725                 __entry->seqno, __entry->status)
 726 );
 727 
 728 TRACE_EVENT(xprt_enq_xmit,
 729         TP_PROTO(
 730                 const struct rpc_task *task,
 731                 int stage
 732         ),
 733 
 734         TP_ARGS(task, stage),
 735 
 736         TP_STRUCT__entry(
 737                 __field(unsigned int, task_id)
 738                 __field(unsigned int, client_id)
 739                 __field(u32, xid)
 740                 __field(u32, seqno)
 741                 __field(int, stage)
 742         ),
 743 
 744         TP_fast_assign(
 745                 __entry->task_id = task->tk_pid;
 746                 __entry->client_id = task->tk_client ?
 747                         task->tk_client->cl_clid : -1;
 748                 __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
 749                 __entry->seqno = task->tk_rqstp->rq_seqno;
 750                 __entry->stage = stage;
 751         ),
 752 
 753         TP_printk(
 754                 "task:%u@%u xid=0x%08x seqno=%u stage=%d",
 755                 __entry->task_id, __entry->client_id, __entry->xid,
 756                 __entry->seqno, __entry->stage)
 757 );
 758 
 759 TRACE_EVENT(xprt_ping,
 760         TP_PROTO(const struct rpc_xprt *xprt, int status),
 761 
 762         TP_ARGS(xprt, status),
 763 
 764         TP_STRUCT__entry(
 765                 __field(int, status)
 766                 __string(addr, xprt->address_strings[RPC_DISPLAY_ADDR])
 767                 __string(port, xprt->address_strings[RPC_DISPLAY_PORT])
 768         ),
 769 
 770         TP_fast_assign(
 771                 __entry->status = status;
 772                 __assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]);
 773                 __assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]);
 774         ),
 775 
 776         TP_printk("peer=[%s]:%s status=%d",
 777                         __get_str(addr), __get_str(port), __entry->status)
 778 );
 779 
 780 TRACE_EVENT(xs_stream_read_data,
 781         TP_PROTO(struct rpc_xprt *xprt, ssize_t err, size_t total),
 782 
 783         TP_ARGS(xprt, err, total),
 784 
 785         TP_STRUCT__entry(
 786                 __field(ssize_t, err)
 787                 __field(size_t, total)
 788                 __string(addr, xprt ? xprt->address_strings[RPC_DISPLAY_ADDR] :
 789                                 "(null)")
 790                 __string(port, xprt ? xprt->address_strings[RPC_DISPLAY_PORT] :
 791                                 "(null)")
 792         ),
 793 
 794         TP_fast_assign(
 795                 __entry->err = err;
 796                 __entry->total = total;
 797                 __assign_str(addr, xprt ?
 798                         xprt->address_strings[RPC_DISPLAY_ADDR] : "(null)");
 799                 __assign_str(port, xprt ?
 800                         xprt->address_strings[RPC_DISPLAY_PORT] : "(null)");
 801         ),
 802 
 803         TP_printk("peer=[%s]:%s err=%zd total=%zu", __get_str(addr),
 804                         __get_str(port), __entry->err, __entry->total)
 805 );
 806 
 807 TRACE_EVENT(xs_stream_read_request,
 808         TP_PROTO(struct sock_xprt *xs),
 809 
 810         TP_ARGS(xs),
 811 
 812         TP_STRUCT__entry(
 813                 __string(addr, xs->xprt.address_strings[RPC_DISPLAY_ADDR])
 814                 __string(port, xs->xprt.address_strings[RPC_DISPLAY_PORT])
 815                 __field(u32, xid)
 816                 __field(unsigned long, copied)
 817                 __field(unsigned int, reclen)
 818                 __field(unsigned int, offset)
 819         ),
 820 
 821         TP_fast_assign(
 822                 __assign_str(addr, xs->xprt.address_strings[RPC_DISPLAY_ADDR]);
 823                 __assign_str(port, xs->xprt.address_strings[RPC_DISPLAY_PORT]);
 824                 __entry->xid = be32_to_cpu(xs->recv.xid);
 825                 __entry->copied = xs->recv.copied;
 826                 __entry->reclen = xs->recv.len;
 827                 __entry->offset = xs->recv.offset;
 828         ),
 829 
 830         TP_printk("peer=[%s]:%s xid=0x%08x copied=%lu reclen=%u offset=%u",
 831                         __get_str(addr), __get_str(port), __entry->xid,
 832                         __entry->copied, __entry->reclen, __entry->offset)
 833 );
 834 
 835 #define show_rqstp_flags(flags)                                         \
 836         __print_flags(flags, "|",                                       \
 837                 { (1UL << RQ_SECURE),           "RQ_SECURE"},           \
 838                 { (1UL << RQ_LOCAL),            "RQ_LOCAL"},            \
 839                 { (1UL << RQ_USEDEFERRAL),      "RQ_USEDEFERRAL"},      \
 840                 { (1UL << RQ_DROPME),           "RQ_DROPME"},           \
 841                 { (1UL << RQ_SPLICE_OK),        "RQ_SPLICE_OK"},        \
 842                 { (1UL << RQ_VICTIM),           "RQ_VICTIM"},           \
 843                 { (1UL << RQ_BUSY),             "RQ_BUSY"})
 844 
 845 TRACE_EVENT(svc_recv,
 846         TP_PROTO(struct svc_rqst *rqst, int len),
 847 
 848         TP_ARGS(rqst, len),
 849 
 850         TP_STRUCT__entry(
 851                 __field(u32, xid)
 852                 __field(int, len)
 853                 __field(unsigned long, flags)
 854                 __string(addr, rqst->rq_xprt->xpt_remotebuf)
 855         ),
 856 
 857         TP_fast_assign(
 858                 __entry->xid = be32_to_cpu(rqst->rq_xid);
 859                 __entry->len = len;
 860                 __entry->flags = rqst->rq_flags;
 861                 __assign_str(addr, rqst->rq_xprt->xpt_remotebuf);
 862         ),
 863 
 864         TP_printk("addr=%s xid=0x%08x len=%d flags=%s",
 865                         __get_str(addr), __entry->xid, __entry->len,
 866                         show_rqstp_flags(__entry->flags))
 867 );
 868 
 869 TRACE_EVENT(svc_process,
 870         TP_PROTO(const struct svc_rqst *rqst, const char *name),
 871 
 872         TP_ARGS(rqst, name),
 873 
 874         TP_STRUCT__entry(
 875                 __field(u32, xid)
 876                 __field(u32, vers)
 877                 __field(u32, proc)
 878                 __string(service, name)
 879                 __string(addr, rqst->rq_xprt ?
 880                          rqst->rq_xprt->xpt_remotebuf : "(null)")
 881         ),
 882 
 883         TP_fast_assign(
 884                 __entry->xid = be32_to_cpu(rqst->rq_xid);
 885                 __entry->vers = rqst->rq_vers;
 886                 __entry->proc = rqst->rq_proc;
 887                 __assign_str(service, name);
 888                 __assign_str(addr, rqst->rq_xprt ?
 889                              rqst->rq_xprt->xpt_remotebuf : "(null)");
 890         ),
 891 
 892         TP_printk("addr=%s xid=0x%08x service=%s vers=%u proc=%u",
 893                         __get_str(addr), __entry->xid,
 894                         __get_str(service), __entry->vers, __entry->proc)
 895 );
 896 
 897 DECLARE_EVENT_CLASS(svc_rqst_event,
 898 
 899         TP_PROTO(
 900                 const struct svc_rqst *rqst
 901         ),
 902 
 903         TP_ARGS(rqst),
 904 
 905         TP_STRUCT__entry(
 906                 __field(u32, xid)
 907                 __field(unsigned long, flags)
 908                 __string(addr, rqst->rq_xprt->xpt_remotebuf)
 909         ),
 910 
 911         TP_fast_assign(
 912                 __entry->xid = be32_to_cpu(rqst->rq_xid);
 913                 __entry->flags = rqst->rq_flags;
 914                 __assign_str(addr, rqst->rq_xprt->xpt_remotebuf);
 915         ),
 916 
 917         TP_printk("addr=%s xid=0x%08x flags=%s",
 918                         __get_str(addr), __entry->xid,
 919                         show_rqstp_flags(__entry->flags))
 920 );
 921 #define DEFINE_SVC_RQST_EVENT(name) \
 922         DEFINE_EVENT(svc_rqst_event, svc_##name, \
 923                         TP_PROTO( \
 924                                 const struct svc_rqst *rqst \
 925                         ), \
 926                         TP_ARGS(rqst))
 927 
 928 DEFINE_SVC_RQST_EVENT(defer);
 929 DEFINE_SVC_RQST_EVENT(drop);
 930 
 931 DECLARE_EVENT_CLASS(svc_rqst_status,
 932 
 933         TP_PROTO(struct svc_rqst *rqst, int status),
 934 
 935         TP_ARGS(rqst, status),
 936 
 937         TP_STRUCT__entry(
 938                 __field(u32, xid)
 939                 __field(int, status)
 940                 __field(unsigned long, flags)
 941                 __string(addr, rqst->rq_xprt->xpt_remotebuf)
 942         ),
 943 
 944         TP_fast_assign(
 945                 __entry->xid = be32_to_cpu(rqst->rq_xid);
 946                 __entry->status = status;
 947                 __entry->flags = rqst->rq_flags;
 948                 __assign_str(addr, rqst->rq_xprt->xpt_remotebuf);
 949         ),
 950 
 951         TP_printk("addr=%s xid=0x%08x status=%d flags=%s",
 952                   __get_str(addr), __entry->xid,
 953                   __entry->status, show_rqstp_flags(__entry->flags))
 954 );
 955 
 956 DEFINE_EVENT(svc_rqst_status, svc_send,
 957         TP_PROTO(struct svc_rqst *rqst, int status),
 958         TP_ARGS(rqst, status));
 959 
 960 #define show_svc_xprt_flags(flags)                                      \
 961         __print_flags(flags, "|",                                       \
 962                 { (1UL << XPT_BUSY),            "XPT_BUSY"},            \
 963                 { (1UL << XPT_CONN),            "XPT_CONN"},            \
 964                 { (1UL << XPT_CLOSE),           "XPT_CLOSE"},           \
 965                 { (1UL << XPT_DATA),            "XPT_DATA"},            \
 966                 { (1UL << XPT_TEMP),            "XPT_TEMP"},            \
 967                 { (1UL << XPT_DEAD),            "XPT_DEAD"},            \
 968                 { (1UL << XPT_CHNGBUF),         "XPT_CHNGBUF"},         \
 969                 { (1UL << XPT_DEFERRED),        "XPT_DEFERRED"},        \
 970                 { (1UL << XPT_OLD),             "XPT_OLD"},             \
 971                 { (1UL << XPT_LISTENER),        "XPT_LISTENER"},        \
 972                 { (1UL << XPT_CACHE_AUTH),      "XPT_CACHE_AUTH"},      \
 973                 { (1UL << XPT_LOCAL),           "XPT_LOCAL"},           \
 974                 { (1UL << XPT_KILL_TEMP),       "XPT_KILL_TEMP"},       \
 975                 { (1UL << XPT_CONG_CTRL),       "XPT_CONG_CTRL"})
 976 
 977 TRACE_EVENT(svc_xprt_do_enqueue,
 978         TP_PROTO(struct svc_xprt *xprt, struct svc_rqst *rqst),
 979 
 980         TP_ARGS(xprt, rqst),
 981 
 982         TP_STRUCT__entry(
 983                 __field(struct svc_xprt *, xprt)
 984                 __field(int, pid)
 985                 __field(unsigned long, flags)
 986                 __string(addr, xprt->xpt_remotebuf)
 987         ),
 988 
 989         TP_fast_assign(
 990                 __entry->xprt = xprt;
 991                 __entry->pid = rqst? rqst->rq_task->pid : 0;
 992                 __entry->flags = xprt->xpt_flags;
 993                 __assign_str(addr, xprt->xpt_remotebuf);
 994         ),
 995 
 996         TP_printk("xprt=%p addr=%s pid=%d flags=%s",
 997                         __entry->xprt, __get_str(addr),
 998                         __entry->pid, show_svc_xprt_flags(__entry->flags))
 999 );
1000 
1001 DECLARE_EVENT_CLASS(svc_xprt_event,
1002         TP_PROTO(struct svc_xprt *xprt),
1003 
1004         TP_ARGS(xprt),
1005 
1006         TP_STRUCT__entry(
1007                 __field(struct svc_xprt *, xprt)
1008                 __field(unsigned long, flags)
1009                 __string(addr, xprt->xpt_remotebuf)
1010         ),
1011 
1012         TP_fast_assign(
1013                 __entry->xprt = xprt;
1014                 __entry->flags = xprt->xpt_flags;
1015                 __assign_str(addr, xprt->xpt_remotebuf);
1016         ),
1017 
1018         TP_printk("xprt=%p addr=%s flags=%s",
1019                         __entry->xprt, __get_str(addr),
1020                         show_svc_xprt_flags(__entry->flags))
1021 );
1022 
1023 DEFINE_EVENT(svc_xprt_event, svc_xprt_no_write_space,
1024         TP_PROTO(struct svc_xprt *xprt),
1025         TP_ARGS(xprt));
1026 
1027 TRACE_EVENT(svc_xprt_dequeue,
1028         TP_PROTO(struct svc_rqst *rqst),
1029 
1030         TP_ARGS(rqst),
1031 
1032         TP_STRUCT__entry(
1033                 __field(struct svc_xprt *, xprt)
1034                 __field(unsigned long, flags)
1035                 __field(unsigned long, wakeup)
1036                 __string(addr, rqst->rq_xprt->xpt_remotebuf)
1037         ),
1038 
1039         TP_fast_assign(
1040                 __entry->xprt = rqst->rq_xprt;
1041                 __entry->flags = rqst->rq_xprt->xpt_flags;
1042                 __entry->wakeup = ktime_to_us(ktime_sub(ktime_get(),
1043                                                         rqst->rq_qtime));
1044                 __assign_str(addr, rqst->rq_xprt->xpt_remotebuf);
1045         ),
1046 
1047         TP_printk("xprt=%p addr=%s flags=%s wakeup-us=%lu",
1048                         __entry->xprt, __get_str(addr),
1049                         show_svc_xprt_flags(__entry->flags),
1050                         __entry->wakeup)
1051 );
1052 
1053 TRACE_EVENT(svc_wake_up,
1054         TP_PROTO(int pid),
1055 
1056         TP_ARGS(pid),
1057 
1058         TP_STRUCT__entry(
1059                 __field(int, pid)
1060         ),
1061 
1062         TP_fast_assign(
1063                 __entry->pid = pid;
1064         ),
1065 
1066         TP_printk("pid=%d", __entry->pid)
1067 );
1068 
1069 TRACE_EVENT(svc_handle_xprt,
1070         TP_PROTO(struct svc_xprt *xprt, int len),
1071 
1072         TP_ARGS(xprt, len),
1073 
1074         TP_STRUCT__entry(
1075                 __field(struct svc_xprt *, xprt)
1076                 __field(int, len)
1077                 __field(unsigned long, flags)
1078                 __string(addr, xprt->xpt_remotebuf)
1079         ),
1080 
1081         TP_fast_assign(
1082                 __entry->xprt = xprt;
1083                 __entry->len = len;
1084                 __entry->flags = xprt->xpt_flags;
1085                 __assign_str(addr, xprt->xpt_remotebuf);
1086         ),
1087 
1088         TP_printk("xprt=%p addr=%s len=%d flags=%s",
1089                 __entry->xprt, __get_str(addr),
1090                 __entry->len, show_svc_xprt_flags(__entry->flags))
1091 );
1092 
1093 TRACE_EVENT(svc_stats_latency,
1094         TP_PROTO(const struct svc_rqst *rqst),
1095 
1096         TP_ARGS(rqst),
1097 
1098         TP_STRUCT__entry(
1099                 __field(u32, xid)
1100                 __field(unsigned long, execute)
1101                 __string(addr, rqst->rq_xprt->xpt_remotebuf)
1102         ),
1103 
1104         TP_fast_assign(
1105                 __entry->xid = be32_to_cpu(rqst->rq_xid);
1106                 __entry->execute = ktime_to_us(ktime_sub(ktime_get(),
1107                                                          rqst->rq_stime));
1108                 __assign_str(addr, rqst->rq_xprt->xpt_remotebuf);
1109         ),
1110 
1111         TP_printk("addr=%s xid=0x%08x execute-us=%lu",
1112                 __get_str(addr), __entry->xid, __entry->execute)
1113 );
1114 
1115 DECLARE_EVENT_CLASS(svc_deferred_event,
1116         TP_PROTO(
1117                 const struct svc_deferred_req *dr
1118         ),
1119 
1120         TP_ARGS(dr),
1121 
1122         TP_STRUCT__entry(
1123                 __field(u32, xid)
1124                 __string(addr, dr->xprt->xpt_remotebuf)
1125         ),
1126 
1127         TP_fast_assign(
1128                 __entry->xid = be32_to_cpu(*(__be32 *)(dr->args +
1129                                                        (dr->xprt_hlen>>2)));
1130                 __assign_str(addr, dr->xprt->xpt_remotebuf);
1131         ),
1132 
1133         TP_printk("addr=%s xid=0x%08x", __get_str(addr), __entry->xid)
1134 );
1135 #define DEFINE_SVC_DEFERRED_EVENT(name) \
1136         DEFINE_EVENT(svc_deferred_event, svc_##name##_deferred, \
1137                         TP_PROTO( \
1138                                 const struct svc_deferred_req *dr \
1139                         ), \
1140                         TP_ARGS(dr))
1141 
1142 DEFINE_SVC_DEFERRED_EVENT(drop);
1143 DEFINE_SVC_DEFERRED_EVENT(revisit);
1144 
1145 #endif /* _TRACE_SUNRPC_H */
1146 
1147 #include <trace/define_trace.h>

/* [<][>][^][v][top][bottom][index][help] */