Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp5046ybp; Tue, 8 Oct 2019 13:04:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqzaWpGpDOz+5QLOLDhYpfvjg+Rxqe6XG11Z51yV18hCiyx6TGX8VsKV9D/jxJ9f5w2QoKan X-Received: by 2002:a50:c306:: with SMTP id a6mr36381143edb.108.1570565078710; Tue, 08 Oct 2019 13:04:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570565078; cv=none; d=google.com; s=arc-20160816; b=zfBN2o62/SicEZKWyaqU9yv7naWqulv4bD0H8RKnd/p4l8ENj1mz7ZZao4Iwh0WF0J mx7xcA6H2hKKYK2qHOIJmLuX7Yo87fF0zIdUYKB6dhLnI0O0q6vP9vYKo0NIvNqNP7e0 OE2vIJH+NLtMHp7J3e7WZ+opajO9HIWT/BjqnwQLXw9xMcHXQeYUICsiUOLtNlC+eUEd VGtAqesqzWFDeO8By011YusUHoAmEYjsbXbowNJyrbPtu6xf4kvumj8LUqorvThdF8Ld P91mwu8eJTEzTDPncfOtL8w1gqiCnJzO3uor2jOFcj6YctzPWP34cVLQaJGthf3FBNkS 0BYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=fYvhF6AIfrRxgOGdG3VEOOsbaUx7UQPiz8XfiHiwJ+A=; b=uLBBRXXBSuoCsV4VeTTwKVTzASU6MobsDpJ4xeuPM6qfEIKSc3XUxRmrLVz6MHz0aQ HbLZLxa3iuNyvqf8FW1eczIGqY+u02vRIffs2OYZOy4Dfi/NjAxE4XfmhWIJ/dy6wN9D uicPDgrOqTAXWzr7OOn3dLRKf6GEAOmALsdYWnwl+OADk8eACE7dksm6WeWBNiGvk9l+ LziFaLrc9Zb8mFGMIbqBd19peq3DXGk/akc2r919Dp7RVav+5AtFfG8YzKgcHlP8RokM RpQfAEQ215QFA/pAlPHvkJ2Vntf28kEg6FAiCWzEOPVrABBMJQnAhPu9rqWPTiTwjjd2 SQGA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h26si65131edb.141.2019.10.08.13.04.01; Tue, 08 Oct 2019 13:04:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730218AbfJHUD6 (ORCPT + 99 others); Tue, 8 Oct 2019 16:03:58 -0400 Received: from fieldses.org ([173.255.197.46]:47282 "EHLO fieldses.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730101AbfJHUD5 (ORCPT ); Tue, 8 Oct 2019 16:03:57 -0400 Received: by fieldses.org (Postfix, from userid 2815) id BEB7C1C21; Tue, 8 Oct 2019 16:03:56 -0400 (EDT) Date: Tue, 8 Oct 2019 16:03:56 -0400 From: "J. Bruce Fields" To: Chuck Lever Cc: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org Subject: Re: [PATCH] svcrdma: Improve DMA mapping trace points Message-ID: <20191008200356.GA9151@fieldses.org> References: <20191004135745.2510.93924.stgit@manet.1015granger.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191004135745.2510.93924.stgit@manet.1015granger.net> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Fri, Oct 04, 2019 at 09:58:20AM -0400, Chuck Lever wrote: > Capture the total size of Sends, the size of DMA map and the > matching DMA unmap to ensure operation is correct. > > Signed-off-by: Chuck Lever > --- > include/trace/events/rpcrdma.h | 30 +++++++++++++++++++++++------- > net/sunrpc/xprtrdma/svc_rdma_sendto.c | 8 ++++++-- > 2 files changed, 29 insertions(+), 9 deletions(-) > > Hey Bruce- > > Please consider this patch for v5.5. Thanks! Applied, thanks! --b. > > > diff --git a/include/trace/events/rpcrdma.h b/include/trace/events/rpcrdma.h > index a138306..9dd7680 100644 > --- a/include/trace/events/rpcrdma.h > +++ b/include/trace/events/rpcrdma.h > @@ -1498,31 +1498,47 @@ > ** Server-side RDMA API events > **/ > > -TRACE_EVENT(svcrdma_dma_map_page, > +DECLARE_EVENT_CLASS(svcrdma_dma_map_class, > TP_PROTO( > const struct svcxprt_rdma *rdma, > - const void *page > + u64 dma_addr, > + u32 length > ), > > - TP_ARGS(rdma, page), > + TP_ARGS(rdma, dma_addr, length), > > TP_STRUCT__entry( > - __field(const void *, page); > + __field(u64, dma_addr) > + __field(u32, length) > __string(device, rdma->sc_cm_id->device->name) > __string(addr, rdma->sc_xprt.xpt_remotebuf) > ), > > TP_fast_assign( > - __entry->page = page; > + __entry->dma_addr = dma_addr; > + __entry->length = length; > __assign_str(device, rdma->sc_cm_id->device->name); > __assign_str(addr, rdma->sc_xprt.xpt_remotebuf); > ), > > - TP_printk("addr=%s device=%s page=%p", > - __get_str(addr), __get_str(device), __entry->page > + TP_printk("addr=%s device=%s dma_addr=%llu length=%u", > + __get_str(addr), __get_str(device), > + __entry->dma_addr, __entry->length > ) > ); > > +#define DEFINE_SVC_DMA_EVENT(name) \ > + DEFINE_EVENT(svcrdma_dma_map_class, svcrdma_##name, \ > + TP_PROTO( \ > + const struct svcxprt_rdma *rdma,\ > + u64 dma_addr, \ > + u32 length \ > + ), \ > + TP_ARGS(rdma, dma_addr, length)) > + > +DEFINE_SVC_DMA_EVENT(dma_map_page); > +DEFINE_SVC_DMA_EVENT(dma_unmap_page); > + > TRACE_EVENT(svcrdma_dma_map_rwctx, > TP_PROTO( > const struct svcxprt_rdma *rdma, > diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c > index 6fdba72..f3f1080 100644 > --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c > +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c > @@ -233,11 +233,15 @@ void svc_rdma_send_ctxt_put(struct svcxprt_rdma *rdma, > /* The first SGE contains the transport header, which > * remains mapped until @ctxt is destroyed. > */ > - for (i = 1; i < ctxt->sc_send_wr.num_sge; i++) > + for (i = 1; i < ctxt->sc_send_wr.num_sge; i++) { > ib_dma_unmap_page(device, > ctxt->sc_sges[i].addr, > ctxt->sc_sges[i].length, > DMA_TO_DEVICE); > + trace_svcrdma_dma_unmap_page(rdma, > + ctxt->sc_sges[i].addr, > + ctxt->sc_sges[i].length); > + } > > for (i = 0; i < ctxt->sc_page_count; ++i) > put_page(ctxt->sc_pages[i]); > @@ -490,6 +494,7 @@ static int svc_rdma_dma_map_page(struct svcxprt_rdma *rdma, > dma_addr_t dma_addr; > > dma_addr = ib_dma_map_page(dev, page, offset, len, DMA_TO_DEVICE); > + trace_svcrdma_dma_map_page(rdma, dma_addr, len); > if (ib_dma_mapping_error(dev, dma_addr)) > goto out_maperr; > > @@ -499,7 +504,6 @@ static int svc_rdma_dma_map_page(struct svcxprt_rdma *rdma, > return 0; > > out_maperr: > - trace_svcrdma_dma_map_page(rdma, page); > return -EIO; > } >