From: Steve Wise <swise@opengridcomputing.com>
To: "J. Bruce Fields" <bfields@fieldses.org>
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:12:56 -0500 [thread overview]
Message-ID: <542074B8.8080503@opengridcomputing.com> (raw)
In-Reply-To: <20140922185550.GC26763@fieldses.org>
On 9/22/2014 1:55 PM, J. Bruce Fields wrote:
> 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.)
>
>
I see. I agree.
WARNING: multiple messages have this Message-ID (diff)
From: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
To: "J. Bruce Fields" <bfields-uC3wQj2KruNg9hUCZPvPmw@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:12:56 -0500 [thread overview]
Message-ID: <542074B8.8080503@opengridcomputing.com> (raw)
In-Reply-To: <20140922185550.GC26763-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
On 9/22/2014 1:55 PM, J. Bruce Fields wrote:
> 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.)
>
>
I see. I agree.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-09-22 19:13 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
2014-09-22 18:55 ` J. Bruce Fields
2014-09-22 19:12 ` Steve Wise [this message]
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=542074B8.8080503@opengridcomputing.com \
--to=swise@opengridcomputing.com \
--cc=bfields@fieldses.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
/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.