From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@poochiereds.net>
Cc: linux-nfs@vger.kernel.org, hch@lst.de, kinglongmee@gmail.com
Subject: Re: [PATCH v3 07/20] nfsd: hook up nfsd_write to the new nfsd_file cache
Date: Wed, 26 Aug 2015 15:53:37 -0400 [thread overview]
Message-ID: <20150826195337.GC4161@fieldses.org> (raw)
In-Reply-To: <1440069440-27454-8-git-send-email-jeff.layton@primarydata.com>
On Thu, Aug 20, 2015 at 07:17:07AM -0400, Jeff Layton wrote:
> Note that all callers currently pass in NULL for "file" anyway, so
> there was already some dead code in here. Just eliminate that parm
> and have it use the file cache instead of dealing directly with a
> filp.
So this is the first time the cache is actually used, right? (Most of
the code introduced by previous patches looks dead until this patch.)
--b.
>
> Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
> ---
> fs/nfsd/nfs3proc.c | 2 +-
> fs/nfsd/nfsproc.c | 2 +-
> fs/nfsd/vfs.c | 33 +++++++++++----------------------
> fs/nfsd/vfs.h | 2 +-
> 4 files changed, 14 insertions(+), 25 deletions(-)
>
> diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c
> index 7b755b7f785c..4e46ac511479 100644
> --- a/fs/nfsd/nfs3proc.c
> +++ b/fs/nfsd/nfs3proc.c
> @@ -192,7 +192,7 @@ nfsd3_proc_write(struct svc_rqst *rqstp, struct nfsd3_writeargs *argp,
>
> fh_copy(&resp->fh, &argp->fh);
> resp->committed = argp->stable;
> - nfserr = nfsd_write(rqstp, &resp->fh, NULL,
> + nfserr = nfsd_write(rqstp, &resp->fh,
> argp->offset,
> rqstp->rq_vec, argp->vlen,
> &cnt,
> diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c
> index 4cd78ef4c95c..9893095cbee1 100644
> --- a/fs/nfsd/nfsproc.c
> +++ b/fs/nfsd/nfsproc.c
> @@ -213,7 +213,7 @@ nfsd_proc_write(struct svc_rqst *rqstp, struct nfsd_writeargs *argp,
> SVCFH_fmt(&argp->fh),
> argp->len, argp->offset);
>
> - nfserr = nfsd_write(rqstp, fh_copy(&resp->fh, &argp->fh), NULL,
> + nfserr = nfsd_write(rqstp, fh_copy(&resp->fh, &argp->fh),
> argp->offset,
> rqstp->rq_vec, argp->vlen,
> &cnt,
> diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
> index b5e077a6e7d4..7c1e7866fec9 100644
> --- a/fs/nfsd/vfs.c
> +++ b/fs/nfsd/vfs.c
> @@ -42,6 +42,7 @@
>
> #include "nfsd.h"
> #include "vfs.h"
> +#include "filecache.h"
>
> #define NFSDDBG_FACILITY NFSDDBG_FILEOP
>
> @@ -1002,30 +1003,18 @@ __be32 nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
> * N.B. After this call fhp needs an fh_put
> */
> __be32
> -nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
> - loff_t offset, struct kvec *vec, int vlen, unsigned long *cnt,
> - int *stablep)
> +nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset,
> + struct kvec *vec, int vlen, unsigned long *cnt, int *stablep)
> {
> - __be32 err = 0;
> -
> - if (file) {
> - err = nfsd_permission(rqstp, fhp->fh_export, fhp->fh_dentry,
> - NFSD_MAY_WRITE|NFSD_MAY_OWNER_OVERRIDE);
> - if (err)
> - goto out;
> - err = nfsd_vfs_write(rqstp, fhp, file, offset, vec, vlen, cnt,
> - stablep);
> - } else {
> - err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_WRITE, &file);
> - if (err)
> - goto out;
> -
> - if (cnt)
> - err = nfsd_vfs_write(rqstp, fhp, file, offset, vec, vlen,
> - cnt, stablep);
> - fput(file);
> + __be32 err;
> + struct nfsd_file *nf;
> +
> + err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_WRITE, &nf);
> + if (err == nfs_ok) {
> + err = nfsd_vfs_write(rqstp, fhp, nf->nf_file, offset, vec,
> + vlen, cnt, stablep);
> + nfsd_file_put(nf);
> }
> -out:
> return err;
> }
>
> diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h
> index 5be875e3e638..78b5527cba93 100644
> --- a/fs/nfsd/vfs.h
> +++ b/fs/nfsd/vfs.h
> @@ -78,7 +78,7 @@ __be32 nfsd_readv(struct file *, loff_t, struct kvec *, int,
> unsigned long *);
> __be32 nfsd_read(struct svc_rqst *, struct svc_fh *,
> loff_t, struct kvec *, int, unsigned long *);
> -__be32 nfsd_write(struct svc_rqst *, struct svc_fh *,struct file *,
> +__be32 nfsd_write(struct svc_rqst *, struct svc_fh *,
> loff_t, struct kvec *,int, unsigned long *, int *);
> __be32 nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp,
> struct file *file, loff_t offset,
> --
> 2.4.3
next prev parent reply other threads:[~2015-08-26 19:53 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-20 11:17 [PATCH v3 00/20] nfsd: open file caching Jeff Layton
2015-08-20 11:17 ` [PATCH v3 01/20] nfsd: allow more than one laundry job to run at a time Jeff Layton
2015-08-20 11:17 ` [PATCH v3 02/20] nfsd: add a new struct file caching facility to nfsd Jeff Layton
2015-08-20 23:11 ` Peng Tao
2015-08-20 23:43 ` Jeff Layton
2015-08-20 11:17 ` [PATCH v3 03/20] list_lru: add list_lru_rotate Jeff Layton
2015-08-20 11:17 ` Jeff Layton
2015-08-21 9:36 ` Vladimir Davydov
2015-08-21 9:36 ` Vladimir Davydov
2015-08-20 11:17 ` [PATCH v3 04/20] nfsd: add a LRU list for nfsd_files Jeff Layton
2015-08-20 11:17 ` [PATCH v3 05/20] nfsd: add a shrinker to the nfsd_file cache Jeff Layton
2015-08-20 11:17 ` [PATCH v3 06/20] locks/nfsd: create a new notifier chain for lease attempts Jeff Layton
2015-08-26 19:49 ` J. Bruce Fields
2015-08-26 22:39 ` Jeff Layton
2015-08-20 11:17 ` [PATCH v3 07/20] nfsd: hook up nfsd_write to the new nfsd_file cache Jeff Layton
2015-08-26 19:53 ` J. Bruce Fields [this message]
2015-08-26 22:40 ` Jeff Layton
2015-08-20 11:17 ` [PATCH v3 08/20] nfsd: hook up nfsd_read to the " Jeff Layton
2015-08-20 11:17 ` [PATCH v3 09/20] sunrpc: add a new cache_detail operation for when a cache is flushed Jeff Layton
2015-08-20 11:17 ` [PATCH v3 10/20] nfsd: handle NFSD_MAY_NOT_BREAK_LEASE in open file cache Jeff Layton
2015-08-20 11:17 ` [PATCH v3 11/20] nfsd: hook nfsd_commit up to the nfsd_file cache Jeff Layton
2015-08-20 11:17 ` [PATCH v3 12/20] nfsd: move include of state.h from trace.c to trace.h Jeff Layton
2015-08-20 11:17 ` [PATCH v3 13/20] nfsd: add new tracepoints for nfsd_file cache Jeff Layton
2015-08-20 11:17 ` [PATCH v3 14/20] nfsd: close cached files prior to a REMOVE or RENAME that would replace target Jeff Layton
2015-08-26 20:00 ` J. Bruce Fields
2015-08-26 22:53 ` Jeff Layton
2015-08-27 13:38 ` J. Bruce Fields
2015-08-28 12:19 ` Jeff Layton
2015-08-28 17:58 ` J. Bruce Fields
2015-08-31 16:50 ` Jeff Layton
2015-08-20 11:17 ` [PATCH v3 15/20] nfsd: call flush_delayed_fput from nfsd_file_close_fh Jeff Layton
2015-08-21 1:01 ` Peng Tao
2015-08-21 2:18 ` Peng Tao
2015-08-21 11:21 ` Jeff Layton
2015-08-20 11:17 ` [PATCH v3 16/20] nfsd: convert nfs4_file->fi_fds array to use nfsd_files Jeff Layton
2015-08-20 11:17 ` [PATCH v3 17/20] nfsd: have nfsd_test_lock use the nfsd_file cache Jeff Layton
2015-08-20 11:17 ` [PATCH v3 18/20] nfsd: convert fi_deleg_file and ls_file fields to nfsd_file Jeff Layton
2015-08-20 11:17 ` [PATCH v3 19/20] nfsd: hook up nfs4_preprocess_stateid_op to the nfsd_file cache Jeff Layton
2015-08-21 1:28 ` Peng Tao
2015-08-21 11:23 ` Jeff Layton
2015-08-20 11:17 ` [PATCH v3 20/20] nfsd: rip out the raparms cache 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=20150826195337.GC4161@fieldses.org \
--to=bfields@fieldses.org \
--cc=hch@lst.de \
--cc=jlayton@poochiereds.net \
--cc=kinglongmee@gmail.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.