Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

SUNRPC: Trace server-side rpcbind registration events

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>

+84 -15
+80
include/trace/events/sunrpc.h
··· 1581 1581 DEFINE_CACHE_EVENT(cache_entry_make_negative); 1582 1582 DEFINE_CACHE_EVENT(cache_entry_no_listener); 1583 1583 1584 + DECLARE_EVENT_CLASS(register_class, 1585 + TP_PROTO( 1586 + const char *program, 1587 + const u32 version, 1588 + const int family, 1589 + const unsigned short protocol, 1590 + const unsigned short port, 1591 + int error 1592 + ), 1593 + 1594 + TP_ARGS(program, version, family, protocol, port, error), 1595 + 1596 + TP_STRUCT__entry( 1597 + __field(u32, version) 1598 + __field(unsigned long, family) 1599 + __field(unsigned short, protocol) 1600 + __field(unsigned short, port) 1601 + __field(int, error) 1602 + __string(program, program) 1603 + ), 1604 + 1605 + TP_fast_assign( 1606 + __entry->version = version; 1607 + __entry->family = family; 1608 + __entry->protocol = protocol; 1609 + __entry->port = port; 1610 + __entry->error = error; 1611 + __assign_str(program, program); 1612 + ), 1613 + 1614 + TP_printk("program=%sv%u proto=%s port=%u family=%s error=%d", 1615 + __get_str(program), __entry->version, 1616 + __entry->protocol == IPPROTO_UDP ? "udp" : "tcp", 1617 + __entry->port, rpc_show_address_family(__entry->family), 1618 + __entry->error 1619 + ) 1620 + ); 1621 + 1622 + #define DEFINE_REGISTER_EVENT(name) \ 1623 + DEFINE_EVENT(register_class, svc_##name, \ 1624 + TP_PROTO( \ 1625 + const char *program, \ 1626 + const u32 version, \ 1627 + const int family, \ 1628 + const unsigned short protocol, \ 1629 + const unsigned short port, \ 1630 + int error \ 1631 + ), \ 1632 + TP_ARGS(program, version, family, protocol, \ 1633 + port, error)) 1634 + 1635 + DEFINE_REGISTER_EVENT(register); 1636 + DEFINE_REGISTER_EVENT(noregister); 1637 + 1638 + TRACE_EVENT(svc_unregister, 1639 + TP_PROTO( 1640 + const char *program, 1641 + const u32 version, 1642 + int error 1643 + ), 1644 + 1645 + TP_ARGS(program, version, error), 1646 + 1647 + TP_STRUCT__entry( 1648 + __field(u32, version) 1649 + __field(int, error) 1650 + __string(program, program) 1651 + ), 1652 + 1653 + TP_fast_assign( 1654 + __entry->version = version; 1655 + __entry->error = error; 1656 + __assign_str(program, program); 1657 + ), 1658 + 1659 + TP_printk("program=%sv%u error=%d", 1660 + __get_str(program), __entry->version, __entry->error 1661 + ) 1662 + ); 1663 + 1584 1664 #endif /* _TRACE_SUNRPC_H */ 1585 1665 1586 1666 #include <trace/define_trace.h>
+4 -15
net/sunrpc/svc.c
··· 991 991 #endif 992 992 } 993 993 994 + trace_svc_register(progname, version, protocol, port, family, error); 994 995 return error; 995 996 } 996 997 ··· 1001 1000 unsigned short proto, 1002 1001 unsigned short port) 1003 1002 { 1004 - dprintk("svc: svc_register(%sv%d, %s, %u, %u)\n", 1005 - progp->pg_name, version, 1006 - proto == IPPROTO_UDP? "udp" : "tcp", 1007 - port, family); 1008 - 1009 1003 return __svc_register(net, progp->pg_name, progp->pg_prog, 1010 1004 version, family, proto, port); 1011 1005 ··· 1020 1024 return 0; 1021 1025 1022 1026 if (vers->vs_hidden) { 1023 - dprintk("svc: svc_register(%sv%d, %s, %u, %u)" 1024 - " (but not telling portmap)\n", 1025 - progp->pg_name, version, 1026 - proto == IPPROTO_UDP? "udp" : "tcp", 1027 - port, family); 1027 + trace_svc_noregister(progp->pg_name, version, proto, 1028 + port, family, 0); 1028 1029 return 0; 1029 1030 } 1030 1031 ··· 1099 1106 if (error == -EPROTONOSUPPORT) 1100 1107 error = rpcb_register(net, program, version, 0, 0); 1101 1108 1102 - dprintk("svc: %s(%sv%u), error %d\n", 1103 - __func__, progname, version, error); 1109 + trace_svc_unregister(progname, version, error); 1104 1110 } 1105 1111 1106 1112 /* ··· 1124 1132 continue; 1125 1133 if (progp->pg_vers[i]->vs_hidden) 1126 1134 continue; 1127 - 1128 - dprintk("svc: attempting to unregister %sv%u\n", 1129 - progp->pg_name, i); 1130 1135 __svc_unregister(net, progp->pg_prog, i, progp->pg_name); 1131 1136 } 1132 1137 }