Re: [PATCH v3 07/20] nfsd: hook up nfsd_write to the new nfsd_file cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxx>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux