From: "J. Bruce Fields" <bfields@fieldses.org>
To: Zach Brown <zab@zabbo.net>
Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] nfsd: fix inclusive vfs_fsync_range() end
Date: Tue, 7 Oct 2014 08:32:24 -0400 [thread overview]
Message-ID: <20141007123224.GA23258@fieldses.org> (raw)
In-Reply-To: <1412638972-14617-1-git-send-email-zab@zabbo.net>
On Mon, Oct 06, 2014 at 04:42:52PM -0700, Zach Brown wrote:
> The vfs_fsync_range() call during write processing got the end of the
> range off by one. The range is inclusive, not exclusive. The error has
> nfsd sync more data than requested -- it's correct but unnecessary
> overhead.
>
> The call during commit processing is correct so I copied that pattern in
> write processing. Maybe a helper would be nice but I kept it trivial.
>
> This is untested. I found it while reviewing code for something else
> entirely.
Makes sense to me, thanks! Queuing up for 3.19.--b.
>
> Signed-off-by: Zach Brown <zab@zabbo.net>
> ---
> fs/nfsd/vfs.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
> index f501a9b..825250e 100644
> --- a/fs/nfsd/vfs.c
> +++ b/fs/nfsd/vfs.c
> @@ -921,6 +921,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
> int stable = *stablep;
> int use_wgather;
> loff_t pos = offset;
> + loff_t end = LLONG_MAX;
> unsigned int pflags = current->flags;
>
> if (rqstp->rq_local)
> @@ -952,10 +953,13 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
> fsnotify_modify(file);
>
> if (stable) {
> - if (use_wgather)
> + if (use_wgather) {
> host_err = wait_for_concurrent_writes(file);
> - else
> - host_err = vfs_fsync_range(file, offset, offset+*cnt, 0);
> + } else {
> + if (*cnt)
> + end = offset + *cnt - 1;
> + host_err = vfs_fsync_range(file, offset, end, 0);
> + }
> }
>
> out_nfserr:
> --
> 1.9.3
>
prev parent reply other threads:[~2014-10-07 12:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-06 23:42 [PATCH] nfsd: fix inclusive vfs_fsync_range() end Zach Brown
2014-10-07 12:32 ` 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=20141007123224.GA23258@fieldses.org \
--to=bfields@fieldses.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=zab@zabbo.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox