From: "J. Bruce Fields" <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH] sunrpc: Remove NULL element at the end of rq_pages
Date: Wed, 12 Jul 2017 15:57:59 -0400 [thread overview]
Message-ID: <20170712195759.GA19030@fieldses.org> (raw)
In-Reply-To: <20170712160657.24663.66681.stgit@klimt.1015granger.net>
On Wed, Jul 12, 2017 at 12:10:40PM -0400, Chuck Lever wrote:
> Bruce points out that the NULL final element of rq_pages is unneeded
> by nfs_read_actor. Remove it.
>
> Thus the 260th element of rq_pages is also no longer needed.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> Hi Bruce-
>
> I've been testing this one. No issues for NFSv4.0 on RDMA with
> krb5i, but NFSv4.0 on TCP with krb5i encounters a problem. The
> server log shows this message:
>
> rpc-srv/tcp: nfsd: sent only 108 when sending 140 bytes - shutting down socket
>
> And iozone stalls on the client. I haven't looked more closely.
Huh.
OK, well maybe there is some code I haven't spotted that depends on that
final NULL in rq_pages, or maybe this is just an unrelated bug, but I
think it's safest just to stick your previous version (from Message-ID:
<20170630160258.11995.10205.stgit@klimt.1015granger.net>) back into the
series and then sort this out later.
But we should clean up these constants and comments, it's confusing
stuff in exactly the sort of code where a mistake could mean letting
anyone on the internet write to your memory.
--b.
>
>
> include/linux/sunrpc/svc.h | 2 +-
> net/sunrpc/svc_xprt.c | 1 -
> 2 files changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
> index d741399..5500544 100644
> --- a/include/linux/sunrpc/svc.h
> +++ b/include/linux/sunrpc/svc.h
> @@ -246,7 +246,7 @@ struct svc_rqst {
> size_t rq_xprt_hlen; /* xprt header len */
> struct xdr_buf rq_arg;
> struct xdr_buf rq_res;
> - struct page *rq_pages[RPCSVC_MAXPAGES + 1];
> + struct page *rq_pages[RPCSVC_MAXPAGES];
> struct page * *rq_respages; /* points into rq_pages */
> struct page * *rq_next_page; /* next reply page to use */
> struct page * *rq_page_end; /* one past the last page */
> diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
> index d16a8b4..b7efd16 100644
> --- a/net/sunrpc/svc_xprt.c
> +++ b/net/sunrpc/svc_xprt.c
> @@ -680,7 +680,6 @@ static int svc_alloc_arg(struct svc_rqst *rqstp)
> rqstp->rq_pages[i] = p;
> }
> rqstp->rq_page_end = &rqstp->rq_pages[i];
> - rqstp->rq_pages[i++] = NULL; /* this might be seen in nfs_read_actor */
>
> /* Make arg->head point to first page and arg->pages point to rest */
> arg = &rqstp->rq_arg;
prev parent reply other threads:[~2017-07-12 19:58 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-12 16:10 [PATCH] sunrpc: Remove NULL element at the end of rq_pages Chuck Lever
2017-07-12 19:57 ` J. Bruce Fields [this message]
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=20170712195759.GA19030@fieldses.org \
--to=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@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.