All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Steve Wise <swise@opengridcomputing.com>
Cc: linux-nfs@vger.kernel.org, linux-rdma@vger.kernel.org
Subject: Re: [PATCH] svcrdma: Advertise the correct max payload
Date: Mon, 22 Sep 2014 14:55:50 -0400	[thread overview]
Message-ID: <20140922185550.GC26763@fieldses.org> (raw)
In-Reply-To: <54206D7F.6070603@opengridcomputing.com>

On Mon, Sep 22, 2014 at 01:42:07PM -0500, Steve Wise wrote:
> On 9/22/2014 1:39 PM, J. Bruce Fields wrote:
> >On Mon, Sep 22, 2014 at 01:36:53PM -0500, Steve Wise wrote:
> >>Svcrdma currently advertises 1MB, which is too large.  The correct value
> >>is the max scatter-gather allowed in an NFSRDMA IO chunk * the host page
> >>size. This bug is usually benign because the Linux X64 NFSRDMA client
> >>correctly limits the payload size to the correct value (64*4096 = 256KB).
> >>But if the Linux client is PPC64 with a 64KB page size, then the client
> >>will indeed use a payload size that will overflow the server.
> >>
> >>Signed-off-by: Steve Wise <swise@opengridcomputing.com>
> >>---
> >>
> >>  net/sunrpc/xprtrdma/svc_rdma_transport.c |    2 +-
> >>  net/sunrpc/xprtrdma/xprt_rdma.h          |    2 ++
> >>  2 files changed, 3 insertions(+), 1 deletions(-)
> >>
> >>diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> >>index 374feb4..4e61880 100644
> >>--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
> >>+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> >>@@ -91,7 +91,7 @@ struct svc_xprt_class svc_rdma_class = {
> >>  	.xcl_name = "rdma",
> >>  	.xcl_owner = THIS_MODULE,
> >>  	.xcl_ops = &svc_rdma_ops,
> >>-	.xcl_max_payload = RPCSVC_MAXPAYLOAD_TCP,
> >>+	.xcl_max_payload = RPCSVC_MAXPAYLOAD_RDMA,
> >>  	.xcl_ident = XPRT_TRANSPORT_RDMA,
> >>  };
> >>diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h
> >>index c419498..467a77c 100644
> >>--- a/net/sunrpc/xprtrdma/xprt_rdma.h
> >>+++ b/net/sunrpc/xprtrdma/xprt_rdma.h
> >>@@ -392,4 +392,6 @@ extern struct kmem_cache *svc_rdma_ctxt_cachep;
> >>  /* Workqueue created in svc_rdma.c */
> >>  extern struct workqueue_struct *svc_rdma_wq;
> >>+#define RPCSVC_MAXPAYLOAD_RDMA	(RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT)
> >Do you want to define this as the minimum of this and
> >RPCSVC_MAXPAYLOAD_TCP, in case RPCRDMA_MAX_DATA_SEGS gets increased some
> >day?
> 
> Why would it need to be limited by MAXPAYLOAD_TCP?

Because you're also limited by the size of the rq_pages array, which is
determined by RPCSVC_MAXPAGES, calculated from RPCSVC_MAXPAYLOAD.

(Actually you probably want RPCSVC_MAXPAYLOAD, not MAXPAYLOAD_TCP.)

--b.

WARNING: multiple messages have this Message-ID (diff)
From: "J. Bruce Fields" <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
To: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] svcrdma: Advertise the correct max payload
Date: Mon, 22 Sep 2014 14:55:50 -0400	[thread overview]
Message-ID: <20140922185550.GC26763@fieldses.org> (raw)
In-Reply-To: <54206D7F.6070603-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>

On Mon, Sep 22, 2014 at 01:42:07PM -0500, Steve Wise wrote:
> On 9/22/2014 1:39 PM, J. Bruce Fields wrote:
> >On Mon, Sep 22, 2014 at 01:36:53PM -0500, Steve Wise wrote:
> >>Svcrdma currently advertises 1MB, which is too large.  The correct value
> >>is the max scatter-gather allowed in an NFSRDMA IO chunk * the host page
> >>size. This bug is usually benign because the Linux X64 NFSRDMA client
> >>correctly limits the payload size to the correct value (64*4096 = 256KB).
> >>But if the Linux client is PPC64 with a 64KB page size, then the client
> >>will indeed use a payload size that will overflow the server.
> >>
> >>Signed-off-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
> >>---
> >>
> >>  net/sunrpc/xprtrdma/svc_rdma_transport.c |    2 +-
> >>  net/sunrpc/xprtrdma/xprt_rdma.h          |    2 ++
> >>  2 files changed, 3 insertions(+), 1 deletions(-)
> >>
> >>diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> >>index 374feb4..4e61880 100644
> >>--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
> >>+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> >>@@ -91,7 +91,7 @@ struct svc_xprt_class svc_rdma_class = {
> >>  	.xcl_name = "rdma",
> >>  	.xcl_owner = THIS_MODULE,
> >>  	.xcl_ops = &svc_rdma_ops,
> >>-	.xcl_max_payload = RPCSVC_MAXPAYLOAD_TCP,
> >>+	.xcl_max_payload = RPCSVC_MAXPAYLOAD_RDMA,
> >>  	.xcl_ident = XPRT_TRANSPORT_RDMA,
> >>  };
> >>diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h
> >>index c419498..467a77c 100644
> >>--- a/net/sunrpc/xprtrdma/xprt_rdma.h
> >>+++ b/net/sunrpc/xprtrdma/xprt_rdma.h
> >>@@ -392,4 +392,6 @@ extern struct kmem_cache *svc_rdma_ctxt_cachep;
> >>  /* Workqueue created in svc_rdma.c */
> >>  extern struct workqueue_struct *svc_rdma_wq;
> >>+#define RPCSVC_MAXPAYLOAD_RDMA	(RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT)
> >Do you want to define this as the minimum of this and
> >RPCSVC_MAXPAYLOAD_TCP, in case RPCRDMA_MAX_DATA_SEGS gets increased some
> >day?
> 
> Why would it need to be limited by MAXPAYLOAD_TCP?

Because you're also limited by the size of the rq_pages array, which is
determined by RPCSVC_MAXPAGES, calculated from RPCSVC_MAXPAYLOAD.

(Actually you probably want RPCSVC_MAXPAYLOAD, not MAXPAYLOAD_TCP.)

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2014-09-22 18:55 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-22 18:36 [PATCH] svcrdma: Advertise the correct max payload Steve Wise
2014-09-22 18:36 ` Steve Wise
2014-09-22 18:39 ` J. Bruce Fields
2014-09-22 18:39   ` J. Bruce Fields
2014-09-22 18:42   ` Steve Wise
2014-09-22 18:42     ` Steve Wise
2014-09-22 18:55     ` J. Bruce Fields [this message]
2014-09-22 18:55       ` J. Bruce Fields
2014-09-22 19:12       ` Steve Wise
2014-09-22 19:12         ` Steve Wise
2014-09-22 19:16       ` Chuck Lever
2014-09-22 19:16         ` Chuck Lever
2014-09-22 18:47   ` Chuck Lever
2014-09-22 18:47     ` Chuck Lever

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140922185550.GC26763@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=swise@opengridcomputing.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.