From patchwork Wed Dec 8 16:54:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 12664805 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2535C433EF for ; Wed, 8 Dec 2021 16:54:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237368AbhLHQ5m (ORCPT ); Wed, 8 Dec 2021 11:57:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47498 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231596AbhLHQ5l (ORCPT ); Wed, 8 Dec 2021 11:57:41 -0500 Received: from sin.source.kernel.org (sin.source.kernel.org [IPv6:2604:1380:40e1:4800::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AD573C061746 for ; Wed, 8 Dec 2021 08:54:07 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id D5513CE225E for ; Wed, 8 Dec 2021 16:54:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E751EC00446 for ; Wed, 8 Dec 2021 16:54:03 +0000 (UTC) From: Chuck Lever To: linux-nfs@vger.kernel.org Subject: [PATCH 1/5] SUNRPC: Remove low signal-to-noise tracepoints Date: Wed, 8 Dec 2021 11:54:02 -0500 Message-Id: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> X-Mailer: git-send-email 2.34.0 User-Agent: StGit/1.4 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2978; h=from:subject:message-id; bh=D19s+a/lLBFIwEGkwt6aIwB669VbJEErVsgPJHeM4i4=; b=owEBbQKS/ZANAwAIATNqszNvZn+XAcsmYgBhsOMkUtnQo9eMQ588t/Onjk8oC+C+X2KEIQcyEzMK SI3ELiSJAjMEAAEIAB0WIQQosuWwEobfJDzyPv4zarMzb2Z/lwUCYbDjJAAKCRAzarMzb2Z/l//TD/ 96xlZuTd51Oi8cgb6tzyOz1LVHrWL727qumHcqPdgW7ECuGPy24kUVkJCkHCgi4/YnWFWXzk7WC1s9 OeNm36u9oSWjVx6ut7beIepbvMozBPbcUG31Cr7+/psbVZzK4eK4PkxR/t7wQ36QOY7khnFb54v0n1 94+SZZrP38j9j2cDAmzqUUKWbEu5bL6gvKk2p0Dv6wjd7UP+1N1mKGSmyC+xDUZGQTpBAoFDuiJN7s scaH6rFH7MrT/kAgIbKikV9AH2xZEdrTZbjRglmLmXR0Ga+tjmTxuuWacVcpJ+q1tu1Iuw2GutOLnK Pc8I5Fswxrkdg+yz3Eya+JAFOmFVEobfYBN3ze3rC4xt+qSHibz6reK5JI+qD2CRbePN00bryVf0yA 8rMn8gVf4idbyXyHTNxZdDIQ+XDYHYbyA+XjXHAmnS5i0lzbuz7Gotqn69xCeJlr+cAx/RdDgKucTp ncE3ESbC/Ukm/P5lqx436+dsgHlZHY/pA6AruHUPqNk2blJ1/XHiVVuYHBCyrONm/20D4ReR+SAgkj m69NhB3ocs0WS3Bvaxc7bb2EQyNzm9xzkxDk/2sYtaT0/z39+uGyPZiO9eXw/pT9O1A58654Ltup0f KA6L17PB9GEZ1bD6u2UFKOGEHJugETIVVioHoaTjI5PzxHf4dFxap4jVkg8g== X-Developer-Key: i=chuck.lever@oracle.com; a=openpgp; fpr=28B2E5B01286DF243CF23EFE336AB3336F667F97 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org I'm about to add more information to the server-side SUNRPC tracepoints, so I'm going to offset the increased trace log consumption by getting rid of some tracepoints that fire frequently but don't offer much value. trace_svc_xprt_received() was useful for debugging, perhaps, but is not generally informative. trace_svc_handle_xprt() reports largely the same information as trace_svc_xdr_recvfrom(). As a clean-up, rename trace_svc_xprt_do_enqueue() to match svc_xprt_dequeue(). Signed-off-by: Chuck Lever --- include/trace/events/sunrpc.h | 24 +----------------------- net/sunrpc/svc_xprt.c | 6 ++---- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h index 3a99358c262b..684cc0e322fa 100644 --- a/include/trace/events/sunrpc.h +++ b/include/trace/events/sunrpc.h @@ -1768,7 +1768,7 @@ TRACE_EVENT(svc_xprt_create_err, __entry->error) ); -TRACE_EVENT(svc_xprt_do_enqueue, +TRACE_EVENT(svc_xprt_enqueue, TP_PROTO(struct svc_xprt *xprt, struct svc_rqst *rqst), TP_ARGS(xprt, rqst), @@ -1815,7 +1815,6 @@ DECLARE_EVENT_CLASS(svc_xprt_event, ), \ TP_ARGS(xprt)) -DEFINE_SVC_XPRT_EVENT(received); DEFINE_SVC_XPRT_EVENT(no_write_space); DEFINE_SVC_XPRT_EVENT(close); DEFINE_SVC_XPRT_EVENT(detach); @@ -1902,27 +1901,6 @@ TRACE_EVENT(svc_alloc_arg_err, TP_printk("pages=%u", __entry->pages) ); -TRACE_EVENT(svc_handle_xprt, - TP_PROTO(struct svc_xprt *xprt, int len), - - TP_ARGS(xprt, len), - - TP_STRUCT__entry( - __field(int, len) - __field(unsigned long, flags) - __string(addr, xprt->xpt_remotebuf) - ), - - TP_fast_assign( - __entry->len = len; - __entry->flags = xprt->xpt_flags; - __assign_str(addr, xprt->xpt_remotebuf); - ), - - TP_printk("addr=%s len=%d flags=%s", __get_str(addr), - __entry->len, show_svc_xprt_flags(__entry->flags)) -); - TRACE_EVENT(svc_stats_latency, TP_PROTO(const struct svc_rqst *rqst), diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index 1e99ba1b9d72..b1744432489e 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -264,8 +264,6 @@ void svc_xprt_received(struct svc_xprt *xprt) return; } - trace_svc_xprt_received(xprt); - /* As soon as we clear busy, the xprt could be closed and * 'put', so we need a reference to call svc_enqueue_xprt with: */ @@ -466,7 +464,7 @@ void svc_xprt_do_enqueue(struct svc_xprt *xprt) out_unlock: rcu_read_unlock(); put_cpu(); - trace_svc_xprt_do_enqueue(xprt, rqstp); + trace_svc_xprt_enqueue(xprt, rqstp); } EXPORT_SYMBOL_GPL(svc_xprt_do_enqueue); @@ -842,8 +840,8 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt) atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); } else svc_xprt_received(xprt); + out: - trace_svc_handle_xprt(xprt, len); return len; } From patchwork Wed Dec 8 16:54:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 12664807 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7E48C433EF for ; Wed, 8 Dec 2021 16:54:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237369AbhLHQ5p (ORCPT ); Wed, 8 Dec 2021 11:57:45 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:56352 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237367AbhLHQ5o (ORCPT ); Wed, 8 Dec 2021 11:57:44 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id E26BAB821C6 for ; Wed, 8 Dec 2021 16:54:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9A4BFC00446 for ; Wed, 8 Dec 2021 16:54:10 +0000 (UTC) From: Chuck Lever To: linux-nfs@vger.kernel.org Subject: [PATCH 2/5] SUNRPC: Record endpoint information in trace log Date: Wed, 8 Dec 2021 11:54:09 -0500 Message-Id: <163898244928.1640.975270046099332764.stgit@bazille.1015granger.net> X-Mailer: git-send-email 2.34.0 In-Reply-To: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> References: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> User-Agent: StGit/1.4 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=7459; h=from:subject:message-id; bh=YRr5EkHxTky+OStoHYg0khKe4OSLZaSqz15JwzwjmBg=; b=owEBbQKS/ZANAwAIATNqszNvZn+XAcsmYgBhsOMx7/ymODzESK/LY78Apv1l6uj+AEbIoMQ+tKFj pI2TfrCJAjMEAAEIAB0WIQQosuWwEobfJDzyPv4zarMzb2Z/lwUCYbDjMQAKCRAzarMzb2Z/l9h8EA CTZUjVuRLmC9S2PnuZR8d3shqRGwJYnRR9dVo1uEMpXb5NlV7CMngOwTd+72/RO2PbdZrWvA3URGeM Pqn7mL8fH4PNJl01zkDA3PgyAYD0Wr3JOz4/exrQf5bV7p74sPHSx6HEPvF4lRQV22XTBnI05xb4wW d4vWjL8SnLBxLk6MPvulc6yjbixmPnuTVEJuYPm7xnHdN2TrhjIodk9X0rJgJNKR83zkfUW6u/XoNR eKhMrS21+si46D5gxagrYfKv7LAooYigNVBu7AUDAIiUeRQOuHmAfaRxNz7dNjwaH07rPyeHxiillH 2oR6qKPCvulWOJZvB9lK8WpMFx1Mf9SYXu1Fzxrbm2C7N0Oomx+IzKl8bM+McIUbjZwS0sCuHrPrif qnbuFbgN22bLBfl0aZ2LnO42cqmBRBlGbWfv777IQkLlGBMaOHP3VZo7wk8Y1QWLuMIMUOC0y5ppnm /WZSSWCtbv8nnagc8/6DwTMo62ErF2yCC3Z7dD4O/OlcF9Vi8mSm31NFEnGRJFaLQqrxkWNfVrAGPg cOyDGLzTXNK3l22GE4mCmFAHGOMjpKGgAZHHlgKhltBa+C6ZV6hKFZmv06biaYmA0D+P0uRBaBMlbP WjEAX6CR8++L8hnevR3qh5cr086OQUAZgLimBBkEn1lPvWbI+HVuelTOssCg== X-Developer-Key: i=chuck.lever@oracle.com; a=openpgp; fpr=28B2E5B01286DF243CF23EFE336AB3336F667F97 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org To make server-side trace events more useful in container-ized environments, capture not just the remote's IP address, but the local IP address and network namespace as well. Signed-off-by: Chuck Lever --- include/trace/events/sunrpc.h | 161 +++++++++++++++++++++++++---------------- 1 file changed, 100 insertions(+), 61 deletions(-) diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h index 684cc0e322fa..193a543d6627 100644 --- a/include/trace/events/sunrpc.h +++ b/include/trace/events/sunrpc.h @@ -1605,57 +1605,92 @@ TRACE_DEFINE_ENUM(SVC_COMPLETE); { SVC_PENDING, "SVC_PENDING" }, \ { SVC_COMPLETE, "SVC_COMPLETE" }) +#define SVC_RQST_ENDPOINT_FIELDS \ + __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ + __array(unsigned char, client, sizeof(struct sockaddr_in6)) \ + __field(unsigned int, netns_ino) \ + __field(u32, xid) + +#define SVC_RQST_ENDPOINT_ASSIGNMENTS(r) \ + do { \ + struct svc_xprt *xprt = (r)->rq_xprt; \ + if (xprt) { \ + memcpy(__entry->server, &xprt->xpt_local, \ + xprt->xpt_locallen); \ + memcpy(__entry->client, &xprt->xpt_remote, \ + xprt->xpt_remotelen); \ + __entry->netns_ino = xprt->xpt_net->ns.inum; \ + } else { \ + memset(__entry->server, 0, sizeof(__entry->server)); \ + memset(__entry->client, 0, sizeof(__entry->client)); \ + __entry->netns_ino = (r)->rq_bc_net->ns.inum; \ + } \ + __entry->xid = be32_to_cpu((r)->rq_xid); \ + } while (0) + +#define SVC_RQST_ENDPOINT_FORMAT \ + "xid=0x%08x server=%pISpc client=%pISpc" + +#define SVC_RQST_ENDPOINT_VARARGS \ + __entry->xid, __entry->server, __entry->client + TRACE_EVENT(svc_authenticate, TP_PROTO(const struct svc_rqst *rqst, int auth_res), TP_ARGS(rqst, auth_res), TP_STRUCT__entry( - __field(u32, xid) + SVC_RQST_ENDPOINT_FIELDS + __field(unsigned long, svc_status) __field(unsigned long, auth_stat) ), TP_fast_assign( - __entry->xid = be32_to_cpu(rqst->rq_xid); + SVC_RQST_ENDPOINT_ASSIGNMENTS(rqst); + __entry->svc_status = auth_res; __entry->auth_stat = be32_to_cpu(rqst->rq_auth_stat); ), - TP_printk("xid=0x%08x auth_res=%s auth_stat=%s", - __entry->xid, svc_show_status(__entry->svc_status), - rpc_show_auth_stat(__entry->auth_stat)) + TP_printk(SVC_RQST_ENDPOINT_FORMAT + " auth_res=%s auth_stat=%s", + SVC_RQST_ENDPOINT_VARARGS, + svc_show_status(__entry->svc_status), + rpc_show_auth_stat(__entry->auth_stat)) ); TRACE_EVENT(svc_process, - TP_PROTO(const struct svc_rqst *rqst, const char *name), + TP_PROTO( + const struct svc_rqst *rqst, + const char *service + ), - TP_ARGS(rqst, name), + TP_ARGS(rqst, service), TP_STRUCT__entry( - __field(u32, xid) + SVC_RQST_ENDPOINT_FIELDS + __field(u32, vers) __field(u32, proc) - __string(service, name) + __string(service, service) __string(procedure, svc_proc_name(rqst)) - __string(addr, rqst->rq_xprt ? - rqst->rq_xprt->xpt_remotebuf : "(null)") ), TP_fast_assign( - __entry->xid = be32_to_cpu(rqst->rq_xid); + SVC_RQST_ENDPOINT_ASSIGNMENTS(rqst); + __entry->vers = rqst->rq_vers; __entry->proc = rqst->rq_proc; - __assign_str(service, name); + __assign_str(service, service); __assign_str(procedure, svc_proc_name(rqst)); - __assign_str(addr, rqst->rq_xprt ? - rqst->rq_xprt->xpt_remotebuf : "(null)"); ), - TP_printk("addr=%s xid=0x%08x service=%s vers=%u proc=%s", - __get_str(addr), __entry->xid, - __get_str(service), __entry->vers, - __get_str(procedure) + TP_printk(SVC_RQST_ENDPOINT_FORMAT + " service=%s vers=%u proc=%s (%u)", + SVC_RQST_ENDPOINT_VARARGS, + __get_str(service), __entry->vers, __get_str(procedure), + __entry->proc ) ); @@ -1668,20 +1703,20 @@ DECLARE_EVENT_CLASS(svc_rqst_event, TP_ARGS(rqst), TP_STRUCT__entry( - __field(u32, xid) + SVC_RQST_ENDPOINT_FIELDS + __field(unsigned long, flags) - __string(addr, rqst->rq_xprt->xpt_remotebuf) ), TP_fast_assign( - __entry->xid = be32_to_cpu(rqst->rq_xid); + SVC_RQST_ENDPOINT_ASSIGNMENTS(rqst); + __entry->flags = rqst->rq_flags; - __assign_str(addr, rqst->rq_xprt->xpt_remotebuf); ), - TP_printk("addr=%s xid=0x%08x flags=%s", - __get_str(addr), __entry->xid, - show_rqstp_flags(__entry->flags)) + TP_printk(SVC_RQST_ENDPOINT_FORMAT " flags=%s", + SVC_RQST_ENDPOINT_VARARGS, + show_rqstp_flags(__entry->flags)) ); #define DEFINE_SVC_RQST_EVENT(name) \ DEFINE_EVENT(svc_rqst_event, svc_##name, \ @@ -1694,34 +1729,63 @@ DEFINE_SVC_RQST_EVENT(defer); DEFINE_SVC_RQST_EVENT(drop); DECLARE_EVENT_CLASS(svc_rqst_status, - - TP_PROTO(struct svc_rqst *rqst, int status), + TP_PROTO( + const struct svc_rqst *rqst, + int status + ), TP_ARGS(rqst, status), TP_STRUCT__entry( - __field(u32, xid) + SVC_RQST_ENDPOINT_FIELDS + __field(int, status) __field(unsigned long, flags) - __string(addr, rqst->rq_xprt->xpt_remotebuf) ), TP_fast_assign( - __entry->xid = be32_to_cpu(rqst->rq_xid); + SVC_RQST_ENDPOINT_ASSIGNMENTS(rqst); + __entry->status = status; __entry->flags = rqst->rq_flags; - __assign_str(addr, rqst->rq_xprt->xpt_remotebuf); ), - TP_printk("addr=%s xid=0x%08x status=%d flags=%s", - __get_str(addr), __entry->xid, - __entry->status, show_rqstp_flags(__entry->flags)) + TP_printk(SVC_RQST_ENDPOINT_FORMAT " status=%d flags=%s", + SVC_RQST_ENDPOINT_VARARGS, + __entry->status, show_rqstp_flags(__entry->flags)) ); DEFINE_EVENT(svc_rqst_status, svc_send, - TP_PROTO(struct svc_rqst *rqst, int status), + TP_PROTO(const struct svc_rqst *rqst, int status), TP_ARGS(rqst, status)); +TRACE_EVENT(svc_stats_latency, + TP_PROTO( + const struct svc_rqst *rqst + ), + + TP_ARGS(rqst), + + TP_STRUCT__entry( + SVC_RQST_ENDPOINT_FIELDS + + __field(unsigned long, execute) + __string(procedure, svc_proc_name(rqst)) + ), + + TP_fast_assign( + SVC_RQST_ENDPOINT_ASSIGNMENTS(rqst); + + __entry->execute = ktime_to_us(ktime_sub(ktime_get(), + rqst->rq_stime)); + __assign_str(procedure, svc_proc_name(rqst)); + ), + + TP_printk(SVC_RQST_ENDPOINT_FORMAT " proc=%s execute-us=%lu", + SVC_RQST_ENDPOINT_VARARGS, + __get_str(procedure), __entry->execute) +); + #define show_svc_xprt_flags(flags) \ __print_flags(flags, "|", \ { (1UL << XPT_BUSY), "XPT_BUSY"}, \ @@ -1901,31 +1965,6 @@ TRACE_EVENT(svc_alloc_arg_err, TP_printk("pages=%u", __entry->pages) ); -TRACE_EVENT(svc_stats_latency, - TP_PROTO(const struct svc_rqst *rqst), - - TP_ARGS(rqst), - - TP_STRUCT__entry( - __field(u32, xid) - __field(unsigned long, execute) - __string(procedure, svc_proc_name(rqst)) - __string(addr, rqst->rq_xprt->xpt_remotebuf) - ), - - TP_fast_assign( - __entry->xid = be32_to_cpu(rqst->rq_xid); - __entry->execute = ktime_to_us(ktime_sub(ktime_get(), - rqst->rq_stime)); - __assign_str(procedure, svc_proc_name(rqst)); - __assign_str(addr, rqst->rq_xprt->xpt_remotebuf); - ), - - TP_printk("addr=%s xid=0x%08x proc=%s execute-us=%lu", - __get_str(addr), __entry->xid, __get_str(procedure), - __entry->execute) -); - DECLARE_EVENT_CLASS(svc_deferred_event, TP_PROTO( const struct svc_deferred_req *dr From patchwork Wed Dec 8 16:54:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 12664809 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4A00C433EF for ; Wed, 8 Dec 2021 16:54:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237367AbhLHQ5v (ORCPT ); Wed, 8 Dec 2021 11:57:51 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:56396 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237374AbhLHQ5v (ORCPT ); Wed, 8 Dec 2021 11:57:51 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 90AE7B82192 for ; Wed, 8 Dec 2021 16:54:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 48CC6C341C7 for ; Wed, 8 Dec 2021 16:54:17 +0000 (UTC) From: Chuck Lever To: linux-nfs@vger.kernel.org Subject: [PATCH 3/5] SUNRPC: Same as SVC_RQST_ENDPOINT, but without the xid Date: Wed, 8 Dec 2021 11:54:16 -0500 Message-Id: <163898245596.1640.1156120092081044565.stgit@bazille.1015granger.net> X-Mailer: git-send-email 2.34.0 In-Reply-To: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> References: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> User-Agent: StGit/1.4 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4690; h=from:subject:message-id; bh=tgA/XfkgG6krNAvHXpbAuOlVyCwM3z84JgEl4BkdJZo=; b=owEBbQKS/ZANAwAIATNqszNvZn+XAcsmYgBhsOM4d5oMpADfV/NeFY9EgT8GszOUNGDl92Cn6NAA eXp7kWaJAjMEAAEIAB0WIQQosuWwEobfJDzyPv4zarMzb2Z/lwUCYbDjOAAKCRAzarMzb2Z/lxKbEA CfVM1/ReesdO2WFXKqOJK/cmrb7VjuLE27oNA7tYIcoSxX0vq4n9BQ0fLNue/p1THzZyKeSPH8MCc1 FKONTEhV5LHY1g9rJl4Cs7FTdoQQZQVGeGqKryE0OMgr82DL8vmIXKwpWJyAD1WTL88naVWCyAYM2D UjzxF5J/+FXBGQ4aqFPidTrhOk8LbQ6mVFdNbG87uITqHcdI62rKIGkqdWroo3+4c/VWMLtafPNgVK YGShkkNTI/Tom+XcoYf3ydsVfGAFSKZu1HBnSvnbcDE/EnB62xmtoN/x7dcqlfTnYi5QEz9sYrFAX4 E2YRCv4sTB1DxSVKJZTAaq65wM/0x044doTGUTpeC2iKFju2EEbj5MMTDwC3gfPSNTtURlejugvCtt zul2MCSS1DZt39+X62RRbxDG3BHcQJp0b430Z6hf0aSysaiB78U4Eaw57n03IJWOAM/mSf51oNc8G7 ICn52rmX2mBdgY/4Lg5MYxVsiw7H/M1MIhxGSW0O/1KfvbRYW4oIjhUclvjA3e5kczkPT153Lu+Yy8 vvL1rMSdq8vebEaPrStzGQG7v6Ix9Cw+nxFjZ4EDJ2wLPd3IY2AtfSAYv8Yonkoum+et+sCRzlRLpK LKq6PBh3YSJ8eqVrrz1LRCazp+REh2csf0AMkj3325u/5qLSUFCAhU4cC/ww== X-Developer-Key: i=chuck.lever@oracle.com; a=openpgp; fpr=28B2E5B01286DF243CF23EFE336AB3336F667F97 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- include/trace/events/sunrpc.h | 112 ++++++++++++++++++++++++++--------------- 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h index 193a543d6627..188852443a33 100644 --- a/include/trace/events/sunrpc.h +++ b/include/trace/events/sunrpc.h @@ -1832,50 +1832,99 @@ TRACE_EVENT(svc_xprt_create_err, __entry->error) ); +#define SVC_XPRT_ENDPOINT_FIELDS \ + __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ + __array(unsigned char, client, sizeof(struct sockaddr_in6)) \ + __field(unsigned long, flags) \ + __field(unsigned int, netns_ino) + +#define SVC_XPRT_ENDPOINT_ASSIGNMENTS(x) \ + do { \ + memcpy(__entry->server, &(x)->xpt_local, \ + (x)->xpt_locallen); \ + memcpy(__entry->client, &(x)->xpt_remote, \ + (x)->xpt_remotelen); \ + __entry->flags = (x)->xpt_flags; \ + __entry->netns_ino = (x)->xpt_net->ns.inum; \ + } while (0) + +#define SVC_XPRT_ENDPOINT_FORMAT \ + "server=%pISpc client=%pISpc flags=%s" + +#define SVC_XPRT_ENDPOINT_VARARGS \ + __entry->server, __entry->client, \ + show_svc_xprt_flags(__entry->flags) + TRACE_EVENT(svc_xprt_enqueue, - TP_PROTO(struct svc_xprt *xprt, struct svc_rqst *rqst), + TP_PROTO( + const struct svc_xprt *xprt, + const struct svc_rqst *rqst + ), TP_ARGS(xprt, rqst), TP_STRUCT__entry( + SVC_XPRT_ENDPOINT_FIELDS + __field(int, pid) - __field(unsigned long, flags) - __string(addr, xprt->xpt_remotebuf) ), TP_fast_assign( + SVC_XPRT_ENDPOINT_ASSIGNMENTS(xprt); + __entry->pid = rqst? rqst->rq_task->pid : 0; - __entry->flags = xprt->xpt_flags; - __assign_str(addr, xprt->xpt_remotebuf); ), - TP_printk("addr=%s pid=%d flags=%s", __get_str(addr), - __entry->pid, show_svc_xprt_flags(__entry->flags)) + TP_printk(SVC_XPRT_ENDPOINT_FORMAT " pid=%d", + SVC_XPRT_ENDPOINT_VARARGS, __entry->pid) +); + +TRACE_EVENT(svc_xprt_dequeue, + TP_PROTO( + const struct svc_rqst *rqst + ), + + TP_ARGS(rqst), + + TP_STRUCT__entry( + SVC_XPRT_ENDPOINT_FIELDS + + __field(unsigned long, wakeup) + ), + + TP_fast_assign( + SVC_XPRT_ENDPOINT_ASSIGNMENTS(rqst->rq_xprt); + + __entry->wakeup = ktime_to_us(ktime_sub(ktime_get(), + rqst->rq_qtime)); + ), + + TP_printk(SVC_XPRT_ENDPOINT_FORMAT " wakeup-us=%lu", + SVC_XPRT_ENDPOINT_VARARGS, __entry->wakeup) ); DECLARE_EVENT_CLASS(svc_xprt_event, - TP_PROTO(struct svc_xprt *xprt), + TP_PROTO( + const struct svc_xprt *xprt + ), TP_ARGS(xprt), TP_STRUCT__entry( - __field(unsigned long, flags) - __string(addr, xprt->xpt_remotebuf) + SVC_XPRT_ENDPOINT_FIELDS ), TP_fast_assign( - __entry->flags = xprt->xpt_flags; - __assign_str(addr, xprt->xpt_remotebuf); + SVC_XPRT_ENDPOINT_ASSIGNMENTS(xprt); ), - TP_printk("addr=%s flags=%s", __get_str(addr), - show_svc_xprt_flags(__entry->flags)) + TP_printk(SVC_XPRT_ENDPOINT_FORMAT, SVC_XPRT_ENDPOINT_VARARGS) ); #define DEFINE_SVC_XPRT_EVENT(name) \ DEFINE_EVENT(svc_xprt_event, svc_xprt_##name, \ TP_PROTO( \ - struct svc_xprt *xprt \ + const struct svc_xprt *xprt \ ), \ TP_ARGS(xprt)) @@ -1893,44 +1942,25 @@ TRACE_EVENT(svc_xprt_accept, TP_ARGS(xprt, service), TP_STRUCT__entry( - __string(addr, xprt->xpt_remotebuf) + SVC_XPRT_ENDPOINT_FIELDS + __string(protocol, xprt->xpt_class->xcl_name) __string(service, service) ), TP_fast_assign( - __assign_str(addr, xprt->xpt_remotebuf); + SVC_XPRT_ENDPOINT_ASSIGNMENTS(xprt); + __assign_str(protocol, xprt->xpt_class->xcl_name); __assign_str(service, service); ), - TP_printk("addr=%s protocol=%s service=%s", - __get_str(addr), __get_str(protocol), __get_str(service) + TP_printk(SVC_XPRT_ENDPOINT_FORMAT " protocol=%s service=%s", + SVC_XPRT_ENDPOINT_VARARGS, + __get_str(protocol), __get_str(service) ) ); -TRACE_EVENT(svc_xprt_dequeue, - TP_PROTO(struct svc_rqst *rqst), - - TP_ARGS(rqst), - - TP_STRUCT__entry( - __field(unsigned long, flags) - __field(unsigned long, wakeup) - __string(addr, rqst->rq_xprt->xpt_remotebuf) - ), - - TP_fast_assign( - __entry->flags = rqst->rq_xprt->xpt_flags; - __entry->wakeup = ktime_to_us(ktime_sub(ktime_get(), - rqst->rq_qtime)); - __assign_str(addr, rqst->rq_xprt->xpt_remotebuf); - ), - - TP_printk("addr=%s flags=%s wakeup-us=%lu", __get_str(addr), - show_svc_xprt_flags(__entry->flags), __entry->wakeup) -); - TRACE_EVENT(svc_wake_up, TP_PROTO(int pid), From patchwork Wed Dec 8 16:54:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 12664811 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53785C433F5 for ; Wed, 8 Dec 2021 16:54:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237393AbhLHQ6C (ORCPT ); Wed, 8 Dec 2021 11:58:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237395AbhLHQ6A (ORCPT ); Wed, 8 Dec 2021 11:58:00 -0500 Received: from sin.source.kernel.org (sin.source.kernel.org [IPv6:2604:1380:40e1:4800::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87CB8C0617A1 for ; Wed, 8 Dec 2021 08:54:28 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id E300ECE2262 for ; Wed, 8 Dec 2021 16:54:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 00A76C00446 for ; Wed, 8 Dec 2021 16:54:23 +0000 (UTC) From: Chuck Lever To: linux-nfs@vger.kernel.org Subject: [PATCH 4/5] NFSD: Combine XDR error tracepoints Date: Wed, 8 Dec 2021 11:54:23 -0500 Message-Id: <163898246262.1640.15450534978421376705.stgit@bazille.1015granger.net> X-Mailer: git-send-email 2.34.0 In-Reply-To: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> References: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> User-Agent: StGit/1.4 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1578; h=from:subject:message-id; bh=ytFvDT7ZO5bBOYHYyKgj4cCDb0K0sKlBcWUe4h8HzL8=; b=owEBbQKS/ZANAwAIATNqszNvZn+XAcsmYgBhsOM+SGifwJKS7alVB21YCvI9iBEOcnOtPAkXN0pi YHIiKBaJAjMEAAEIAB0WIQQosuWwEobfJDzyPv4zarMzb2Z/lwUCYbDjPgAKCRAzarMzb2Z/lwpNEA CNzH3f7oCAliKE6KpktWciSUHCQaIQTIbpOrG1JGp2syNrCumAiu5VFtfqxUsHbY3jJxq5yhgiV9Ja 3OTwEtJNtkywnq7SzNFBUGUEvuvmiZXjl5IY5pwbPKM6a6y91H52uSeGkmu6WABAG1xhWPCcB886o3 uAxAo1uUk2s+zoHUzAMJTmt21GigGzXJ6oN5PBhWzavGRVoR1OTcFoJ7Th/XMEFtmMfE8Odr/eY/3A kZQvaRIPsOTdkgyw7suphUaOownL/cMAf1JvSNJuJsXA67C365/wFPPh68tTrkqvz1HgBsBwbhDe6c B/bMhhb7UMHE/T9nkFJf5A3XaApmAS4e22PrVVvYSetEIuLsxrYOzJzsUpWbvCKyvj2lKyIZiKInIQ ZhsDetHOdCHEHrgE1FKnr4P5b7SUq2sZFjMqAYkt+QZOMzn9d1HAhLA4Ws1unaPsPMHycGyY2BhE/V oPETRxDWd3rFEdHC6X9UCYGK8kuSlpSFBkxeUFv1ErXRTCuDqpltk7pxPXAoKPna9GbIQRZaMP8Czj PXTblvQOAEf9Ag40OdenpR2xZqJt/4pnayyvYFEVWaQF6EjvtlEzHvjFz+o2qVyPOxLQOkZEmJMV6W 4wMWThjafQcICnkX+ENar0QfksI6Qz1gerFaqAYKaZK5DeStDMLHh4HOZWtw== X-Developer-Key: i=chuck.lever@oracle.com; a=openpgp; fpr=28B2E5B01286DF243CF23EFE336AB3336F667F97 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Clean up: The garbage_args and cant_encode tracepoints report the same information as each other, so combine them into a single tracepoint class to reduce code duplication and slightly reduce the size of trace.o. Signed-off-by: Chuck Lever --- fs/nfsd/trace.h | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index f1e0d3c51bc2..6afb32093104 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -47,7 +47,7 @@ rqstp->rq_xprt->xpt_remotelen); \ } while (0); -TRACE_EVENT(nfsd_garbage_args_err, +DECLARE_EVENT_CLASS(nfsd_xdr_err_class, TP_PROTO( const struct svc_rqst *rqstp ), @@ -69,27 +69,13 @@ TRACE_EVENT(nfsd_garbage_args_err, ) ); -TRACE_EVENT(nfsd_cant_encode_err, - TP_PROTO( - const struct svc_rqst *rqstp - ), - TP_ARGS(rqstp), - TP_STRUCT__entry( - NFSD_TRACE_PROC_ARG_FIELDS +#define DEFINE_NFSD_XDR_ERR_EVENT(name) \ +DEFINE_EVENT(nfsd_xdr_err_class, nfsd_##name##_err, \ + TP_PROTO(const struct svc_rqst *rqstp), \ + TP_ARGS(rqstp)) - __field(u32, vers) - __field(u32, proc) - ), - TP_fast_assign( - NFSD_TRACE_PROC_ARG_ASSIGNMENTS - - __entry->vers = rqstp->rq_vers; - __entry->proc = rqstp->rq_proc; - ), - TP_printk("xid=0x%08x vers=%u proc=%u", - __entry->xid, __entry->vers, __entry->proc - ) -); +DEFINE_NFSD_XDR_ERR_EVENT(garbage_args); +DEFINE_NFSD_XDR_ERR_EVENT(cant_encode); #define show_nfsd_may_flags(x) \ __print_flags(x, "|", \ From patchwork Wed Dec 8 16:54:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 12664813 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 60D1BC433EF for ; Wed, 8 Dec 2021 16:54:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237373AbhLHQ6F (ORCPT ); Wed, 8 Dec 2021 11:58:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232320AbhLHQ6F (ORCPT ); Wed, 8 Dec 2021 11:58:05 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 320AEC061746 for ; Wed, 8 Dec 2021 08:54:33 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id F067DB82192 for ; Wed, 8 Dec 2021 16:54:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A2542C00446 for ; Wed, 8 Dec 2021 16:54:30 +0000 (UTC) From: Chuck Lever To: linux-nfs@vger.kernel.org Subject: [PATCH 5/5] NFSD: Remove NFSD_PROC_ARGS_* macros Date: Wed, 8 Dec 2021 11:54:29 -0500 Message-Id: <163898246933.1640.1670630616955821708.stgit@bazille.1015granger.net> X-Mailer: git-send-email 2.34.0 In-Reply-To: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> References: <163898243636.1640.16855750027301323187.stgit@bazille.1015granger.net> User-Agent: StGit/1.4 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2206; h=from:subject:message-id; bh=Cct/LOBqnmHkqbnyMm0Fo1BELuCRkhq17qZzpI7UZIc=; b=owEBbQKS/ZANAwAIATNqszNvZn+XAcsmYgBhsONFvipekzWYmfcFdVkzTEVc/2JnbxcrtssGutDf HHoPgwuJAjMEAAEIAB0WIQQosuWwEobfJDzyPv4zarMzb2Z/lwUCYbDjRQAKCRAzarMzb2Z/lwBWEA C+jt7i3hB+A7l5+nZPDZ/nPyspEd3kxhdmMLdrOIOwx02xv7f5qLyp5s6WVrcctNAJvl+MLHn9I/hS XqwrdCCxgGze466JuVoqkI5OsOMQPpDwhW1jR9QT9hRGtwLlSIiGAfzLInoLXMvxWkpnW0XxgT0DbL X5m2RqvImogz+1YCQUeris3Gk4AMK26qvZ/Q8Bfjj3bi0c1Cpws9k6c3JT7ao819T5TacXuvC2w+4F 0PI0uJPj5iZ2p6LwjWyOWm5In6/ZYdFUzWhaC4ff3VCN8pI4rqQ3PWd0EefIWq1kqqvDSGwv2H2cFE VtKL0+F6PW4Ym4Uq7L5fEr61murbPwNN6+RuDBTUdaQf5Ut4k+Cx8GWQp7LztEYIi6dhgmZKaHE2Ak HC9RyYoLH2QsLti9/UktKcyzA8NHMk6y6kTvxrmmhqSES9EfC4ZgkowbEPrxmDvZJBf3fgcJfz4reG gMLMasq3B/eZtjhH3+E5V5WZ8u8Nxw0i3YINC0EoxE8BRx8pmQ/4T9Df4YxctAQE2AuFWDy40qW7q2 I7S/Or38qo5y5Ja53GWA53RwdrskAIPawRVdjpB08hR3sgYcPkuxsN/Lf+I+efLkqIinxcxSvNpQl/ kKu0tsdoet/yuloPY8c6gQytyPdu1B7zI5z1659XteunBWB+QufsBVZivIzg== X-Developer-Key: i=chuck.lever@oracle.com; a=openpgp; fpr=28B2E5B01286DF243CF23EFE336AB3336F667F97 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Clean up. The PROC_ARGS macros were added when I thought that NFSD tracepoints would be reporting endpoint information. However, tracepoints in the RPC server now report transport endpoint information, so in general there's no need for the upper layers to do that any more, and these macros can be retired. Signed-off-by: Chuck Lever --- fs/nfsd/trace.h | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index 6afb32093104..ebfe2b878574 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -13,22 +13,6 @@ #include "export.h" #include "nfsfh.h" -#define NFSD_TRACE_PROC_ARG_FIELDS \ - __field(unsigned int, netns_ino) \ - __field(u32, xid) \ - __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ - __array(unsigned char, client, sizeof(struct sockaddr_in6)) - -#define NFSD_TRACE_PROC_ARG_ASSIGNMENTS \ - do { \ - __entry->netns_ino = SVC_NET(rqstp)->ns.inum; \ - __entry->xid = be32_to_cpu(rqstp->rq_xid); \ - memcpy(__entry->server, &rqstp->rq_xprt->xpt_local, \ - rqstp->rq_xprt->xpt_locallen); \ - memcpy(__entry->client, &rqstp->rq_xprt->xpt_remote, \ - rqstp->rq_xprt->xpt_remotelen); \ - } while (0); - #define NFSD_TRACE_PROC_RES_FIELDS \ __field(unsigned int, netns_ino) \ __field(u32, xid) \ @@ -53,14 +37,20 @@ DECLARE_EVENT_CLASS(nfsd_xdr_err_class, ), TP_ARGS(rqstp), TP_STRUCT__entry( - NFSD_TRACE_PROC_ARG_FIELDS - + __array(unsigned char, server, sizeof(struct sockaddr_in6)) + __array(unsigned char, client, sizeof(struct sockaddr_in6)) + __field(unsigned int, netns_ino) + __field(u32, xid) __field(u32, vers) __field(u32, proc) ), TP_fast_assign( - NFSD_TRACE_PROC_ARG_ASSIGNMENTS + const struct svc_xprt *xprt = rqstp->rq_xprt; + memcpy(__entry->server, &xprt->xpt_local, xprt->xpt_locallen); + memcpy(__entry->client, &xprt->xpt_remote, xprt->xpt_remotelen); + __entry->netns_ino = xprt->xpt_net->ns.inum; + __entry->xid = be32_to_cpu(rqstp->rq_xid); __entry->vers = rqstp->rq_vers; __entry->proc = rqstp->rq_proc; ),