global xs_task, trans_task, udp_send_task, sendpages_sock /* probe module("sunrpc").function("xs_connect") { //printf("xs_connect: task %p\n", $task); //print_backtrace(); } */ /* probe module("sunrpc").function("xs_tcp_connect") { printf("xs_tcp_connect: task %p\n", $task); //print_backtrace(); xs_task = $task; } */ probe module("sunrpc").function("xprt_connect_status") { xs_task = $task; } probe module("sunrpc").function("xprt_connect_status").return { tdump = task_dump(xs_task); if (isinstr(tdump, "tk_status 0") != 1 && isinstr(tdump, "tk_status -11") != 1) printf("xprt_connect_status: %s(%d): %s\n", execname(), pid(), tdump); } probe kernel.function("kernel_connect").return { if ($return < 0 && $return != -11 && $return != -115) printf("kernel_connect: %s(%d): status %d\n", execname(), pid(), $return); } probe module("sunrpc").function("xprt_transmit") { trans_task = $task; } probe module("sunrpc").function("xprt_transmit").return { if (task_status(trans_task) && task_status(trans_task) != -11) printf("xprt_transmit: %s(%d): %s\n\t%s\n", execname(), pid(), task_dump(trans_task), xprt_dump(trans_task)); } probe module("sunrpc").function("xs_tcp_send_request").return { if ($return < 0 && $return != -11) printf("xs_tcp_send_request: %s(%d): status %d (%s)\n", execname(), pid(), $return, errno_str($return)); } probe module("sunrpc").function("xs_sendpages") { sendpages_sock = $sock } probe module("sunrpc").function("xs_sendpages").return { if ($return < 0 && $return != -11) printf("xs_sendpages: %s(%d): sock %p status %d (%s)\n", execname(), pid(), sendpages_sock, $return, errno_str($return)); } probe module("sunrpc").function("xs_send_kvec").return { if ($return < 0 && $return != -11) printf("xs_send_kvec: %s(%d): status %d (%s)\n", execname(), pid(), $return, errno_str($return)); } /* probe module("sunrpc").function("xs_send_pagedata").return { if ($return < 0) printf("xs_send_pagedata: %s(%d): status %d (%s)\n", execname(), pid(), $return, errno_str($return)); } */ probe kernel.function("kernel_sendmsg").return { if ($return < 0 && $return != -11) printf("kernel_sendmsg: %s(%d): status %d (%s)\n", execname(), pid(), $return, errno_str($return)); } /* probe module("sunrpc").function("xs_udp_send_request") { printf("xs_udp_send_request: task %p\n", $task); udp_send_task = $task; } probe module("sunrpc").function("xs_udp_send_request").return { if ($return) printf("xs_udp_send_request: %d (%s)\n", $return, errno_str($return)); } probe module("sunrpc").function("xs_bind4").return { printf("xs_bind4: %d %s\n", $return, errno_str($return)); } */ probe begin { log("starting xprt probe") } probe end { log("ending xprt probe") }