From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@redhat.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH 9/8] nfsd: handle arbitrary page array layouts in nfsd_cache_crc
Date: Mon, 4 Feb 2013 13:18:53 -0500 [thread overview]
Message-ID: <20130204181853.GM815@fieldses.org> (raw)
In-Reply-To: <1360001258-13320-1-git-send-email-jlayton@redhat.com>
On Mon, Feb 04, 2013 at 01:07:38PM -0500, Jeff Layton wrote:
> The original code didn't handle the case where the page_base was close
> to the end of the page. In practice, page_base is always 0 on receive,
> so it's not a problem today, but let's future-proof this in the event
> that it ever is.
OK--b.
>
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
> ---
> fs/nfsd/nfscache.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
> index cb655f3..e705fea 100644
> --- a/fs/nfsd/nfscache.c
> +++ b/fs/nfsd/nfscache.c
> @@ -248,6 +248,8 @@ nfsd_reply_cache_shrink(struct shrinker *shrink, struct shrink_control *sc)
> static u32
> nfsd_cache_crc(struct xdr_buf *buf)
> {
> + int idx;
> + unsigned int base;
> u32 crc;
> const unsigned char *p = buf->head[0].iov_base;
> size_t csum_len = min_t(size_t, buf->head[0].iov_len + buf->page_len,
> @@ -258,13 +260,18 @@ nfsd_cache_crc(struct xdr_buf *buf)
> crc = crc32(crc_seed, p, len);
> csum_len -= len;
>
> - /* Nothing left */
> - if (!csum_len)
> - return crc;
> -
> - /* checksum the rest from the page_array */
> - p = page_address(buf->pages[0]) + buf->page_base;
> - return crc32(crc, p, csum_len);
> + /* Continue into page array */
> + idx = buf->page_base / PAGE_SIZE;
> + base = buf->page_base & ~PAGE_MASK;
> + while (csum_len) {
> + p = page_address(buf->pages[idx]) + base;
> + len = min(PAGE_SIZE - base, csum_len);
> + crc = crc32(crc, p, len);
> + csum_len -= len;
> + base = 0;
> + ++idx;
> + }
> + return crc;
> }
>
> /*
> --
> 1.7.11.7
>
next prev parent reply other threads:[~2013-02-04 18:18 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 13:17 [PATCH v2 0/8] nfsd: duplicate reply cache overhaul Jeff Layton
2013-02-04 13:18 ` [PATCH v2 1/8] nfsd: always move DRC entries to the end of LRU list when updating timestamp Jeff Layton
2013-02-04 13:18 ` [PATCH v2 2/8] nfsd: track the number of DRC entries in the cache Jeff Layton
2013-02-04 13:18 ` [PATCH v2 3/8] nfsd: dynamically allocate DRC entries Jeff Layton
2013-02-04 13:18 ` [PATCH v2 4/8] nfsd: remove the cache_disabled flag Jeff Layton
2013-02-04 13:18 ` [PATCH v2 5/8] nfsd: when updating an entry with RC_NOCACHE, just free it Jeff Layton
2013-02-04 13:18 ` [PATCH v2 6/8] nfsd: add recurring workqueue job to clean the cache Jeff Layton
2013-02-04 13:18 ` [PATCH v2 7/8] nfsd: register a shrinker for DRC cache entries Jeff Layton
2013-02-04 13:18 ` [PATCH v2 8/8] nfsd: keep a checksum of the first 256 bytes of request Jeff Layton
2013-02-04 15:54 ` J. Bruce Fields
2013-02-04 16:16 ` Jeff Layton
2013-02-04 20:20 ` J. Bruce Fields
2013-02-05 14:55 ` J. Bruce Fields
2013-02-05 15:51 ` Jeff Layton
2013-02-04 15:56 ` [PATCH v2 0/8] nfsd: duplicate reply cache overhaul J. Bruce Fields
2013-02-04 18:07 ` [PATCH 9/8] nfsd: handle arbitrary page array layouts in nfsd_cache_crc Jeff Layton
2013-02-04 18:18 ` J. Bruce Fields [this message]
2013-02-05 15:15 ` [PATCH v2 0/8] nfsd: duplicate reply cache overhaul J. Bruce Fields
2013-02-05 15:58 ` Jeff Layton
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=20130204181853.GM815@fieldses.org \
--to=bfields@fieldses.org \
--cc=jlayton@redhat.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.