|
9 | 9 | #define _NFSD_TRACE_H |
10 | 10 |
|
11 | 11 | #include <linux/tracepoint.h> |
| 12 | +#include <linux/sunrpc/xprt.h> |
| 13 | +#include <trace/misc/nfs.h> |
12 | 14 |
|
13 | 15 | #include "export.h" |
14 | 16 | #include "nfsfh.h" |
| 17 | +#include "xdr4.h" |
15 | 18 |
|
16 | 19 | #define NFSD_TRACE_PROC_RES_FIELDS \ |
17 | 20 | __field(unsigned int, netns_ino) \ |
@@ -1563,6 +1566,32 @@ TRACE_EVENT(nfsd_cb_offload, |
1563 | 1566 | __entry->fh_hash, __entry->count, __entry->status) |
1564 | 1567 | ); |
1565 | 1568 |
|
| 1569 | +TRACE_EVENT(nfsd_cb_recall_any, |
| 1570 | + TP_PROTO( |
| 1571 | + const struct nfsd4_cb_recall_any *ra |
| 1572 | + ), |
| 1573 | + TP_ARGS(ra), |
| 1574 | + TP_STRUCT__entry( |
| 1575 | + __field(u32, cl_boot) |
| 1576 | + __field(u32, cl_id) |
| 1577 | + __field(u32, keep) |
| 1578 | + __field(unsigned long, bmval0) |
| 1579 | + __sockaddr(addr, ra->ra_cb.cb_clp->cl_cb_conn.cb_addrlen) |
| 1580 | + ), |
| 1581 | + TP_fast_assign( |
| 1582 | + __entry->cl_boot = ra->ra_cb.cb_clp->cl_clientid.cl_boot; |
| 1583 | + __entry->cl_id = ra->ra_cb.cb_clp->cl_clientid.cl_id; |
| 1584 | + __entry->keep = ra->ra_keep; |
| 1585 | + __entry->bmval0 = ra->ra_bmval[0]; |
| 1586 | + __assign_sockaddr(addr, &ra->ra_cb.cb_clp->cl_addr, |
| 1587 | + ra->ra_cb.cb_clp->cl_cb_conn.cb_addrlen); |
| 1588 | + ), |
| 1589 | + TP_printk("addr=%pISpc client %08x:%08x keep=%u bmval0=%s", |
| 1590 | + __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, |
| 1591 | + __entry->keep, show_rca_mask(__entry->bmval0) |
| 1592 | + ) |
| 1593 | +); |
| 1594 | + |
1566 | 1595 | DECLARE_EVENT_CLASS(nfsd_cb_done_class, |
1567 | 1596 | TP_PROTO( |
1568 | 1597 | const stateid_t *stp, |
@@ -1602,6 +1631,27 @@ DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_notify_lock_done); |
1602 | 1631 | DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_layout_done); |
1603 | 1632 | DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_offload_done); |
1604 | 1633 |
|
| 1634 | +TRACE_EVENT(nfsd_cb_recall_any_done, |
| 1635 | + TP_PROTO( |
| 1636 | + const struct nfsd4_callback *cb, |
| 1637 | + const struct rpc_task *task |
| 1638 | + ), |
| 1639 | + TP_ARGS(cb, task), |
| 1640 | + TP_STRUCT__entry( |
| 1641 | + __field(u32, cl_boot) |
| 1642 | + __field(u32, cl_id) |
| 1643 | + __field(int, status) |
| 1644 | + ), |
| 1645 | + TP_fast_assign( |
| 1646 | + __entry->status = task->tk_status; |
| 1647 | + __entry->cl_boot = cb->cb_clp->cl_clientid.cl_boot; |
| 1648 | + __entry->cl_id = cb->cb_clp->cl_clientid.cl_id; |
| 1649 | + ), |
| 1650 | + TP_printk("client %08x:%08x status=%d", |
| 1651 | + __entry->cl_boot, __entry->cl_id, __entry->status |
| 1652 | + ) |
| 1653 | +); |
| 1654 | + |
1605 | 1655 | #endif /* _NFSD_TRACE_H */ |
1606 | 1656 |
|
1607 | 1657 | #undef TRACE_INCLUDE_PATH |
|
0 commit comments