nfsd: minor nfsd read api cleanup
Christoph points that the NFSv2/v3 callers know which case they want here, so we may as well just call the file=NULL case directly instead of making this conditional. Cc: Christoph Hellwig <hch@infradead.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
6904996101
commit
039a87ca53
@ -168,7 +168,7 @@ nfsd3_proc_read(struct svc_rqst *rqstp, struct nfsd3_readargs *argp,
|
|||||||
svc_reserve_auth(rqstp, ((1 + NFS3_POST_OP_ATTR_WORDS + 3)<<2) + resp->count +4);
|
svc_reserve_auth(rqstp, ((1 + NFS3_POST_OP_ATTR_WORDS + 3)<<2) + resp->count +4);
|
||||||
|
|
||||||
fh_copy(&resp->fh, &argp->fh);
|
fh_copy(&resp->fh, &argp->fh);
|
||||||
nfserr = nfsd_read(rqstp, &resp->fh, NULL,
|
nfserr = nfsd_read(rqstp, &resp->fh,
|
||||||
argp->offset,
|
argp->offset,
|
||||||
rqstp->rq_vec, argp->vlen,
|
rqstp->rq_vec, argp->vlen,
|
||||||
&resp->count);
|
&resp->count);
|
||||||
|
@ -2630,7 +2630,7 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
|
|||||||
}
|
}
|
||||||
read->rd_vlen = v;
|
read->rd_vlen = v;
|
||||||
|
|
||||||
nfserr = nfsd_read(read->rd_rqstp, read->rd_fhp, read->rd_filp,
|
nfserr = nfsd_read_file(read->rd_rqstp, read->rd_fhp, read->rd_filp,
|
||||||
read->rd_offset, resp->rqstp->rq_vec, read->rd_vlen,
|
read->rd_offset, resp->rqstp->rq_vec, read->rd_vlen,
|
||||||
&maxcount);
|
&maxcount);
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ nfsd_proc_read(struct svc_rqst *rqstp, struct nfsd_readargs *argp,
|
|||||||
svc_reserve_auth(rqstp, (19<<2) + argp->count + 4);
|
svc_reserve_auth(rqstp, (19<<2) + argp->count + 4);
|
||||||
|
|
||||||
resp->count = argp->count;
|
resp->count = argp->count;
|
||||||
nfserr = nfsd_read(rqstp, fh_copy(&resp->fh, &argp->fh), NULL,
|
nfserr = nfsd_read(rqstp, fh_copy(&resp->fh, &argp->fh),
|
||||||
argp->offset,
|
argp->offset,
|
||||||
rqstp->rq_vec, argp->vlen,
|
rqstp->rq_vec, argp->vlen,
|
||||||
&resp->count);
|
&resp->count);
|
||||||
|
@ -1065,7 +1065,12 @@ out:
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __be32 nfsd_open_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
/*
|
||||||
|
* Read data from a file. count must contain the requested read count
|
||||||
|
* on entry. On return, *count contains the number of bytes actually read.
|
||||||
|
* N.B. After this call fhp needs an fh_put
|
||||||
|
*/
|
||||||
|
__be32 nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||||
loff_t offset, struct kvec *vec, int vlen, unsigned long *count)
|
loff_t offset, struct kvec *vec, int vlen, unsigned long *count)
|
||||||
{
|
{
|
||||||
struct file *file;
|
struct file *file;
|
||||||
@ -1101,13 +1106,9 @@ static __be32 nfsd_open_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* As above, but use the provided file descriptor. */
|
||||||
* Read data from a file. count must contain the requested read count
|
|
||||||
* on entry. On return, *count contains the number of bytes actually read.
|
|
||||||
* N.B. After this call fhp needs an fh_put
|
|
||||||
*/
|
|
||||||
__be32
|
__be32
|
||||||
nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
nfsd_read_file(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
||||||
loff_t offset, struct kvec *vec, int vlen,
|
loff_t offset, struct kvec *vec, int vlen,
|
||||||
unsigned long *count)
|
unsigned long *count)
|
||||||
{
|
{
|
||||||
@ -1119,8 +1120,8 @@ nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
|||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
err = nfsd_vfs_read(rqstp, fhp, file, offset, vec, vlen, count);
|
err = nfsd_vfs_read(rqstp, fhp, file, offset, vec, vlen, count);
|
||||||
} else
|
} else /* Note file may still be NULL in NFSv4 special stateid case: */
|
||||||
err = nfsd_open_read(rqstp, fhp, offset, vec, vlen, count);
|
err = nfsd_read(rqstp, fhp, offset, vec, vlen, count);
|
||||||
out:
|
out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,9 @@ __be32 nfsd_commit(struct svc_rqst *, struct svc_fh *,
|
|||||||
__be32 nfsd_open(struct svc_rqst *, struct svc_fh *, int,
|
__be32 nfsd_open(struct svc_rqst *, struct svc_fh *, int,
|
||||||
int, struct file **);
|
int, struct file **);
|
||||||
void nfsd_close(struct file *);
|
void nfsd_close(struct file *);
|
||||||
__be32 nfsd_read(struct svc_rqst *, struct svc_fh *, struct file *,
|
__be32 nfsd_read(struct svc_rqst *, struct svc_fh *,
|
||||||
|
loff_t, struct kvec *, int, unsigned long *);
|
||||||
|
__be32 nfsd_read_file(struct svc_rqst *, struct svc_fh *, struct file *,
|
||||||
loff_t, struct kvec *, int, unsigned long *);
|
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 *,struct file *,
|
||||||
loff_t, struct kvec *,int, unsigned long *, int *);
|
loff_t, struct kvec *,int, unsigned long *, int *);
|
||||||
|
Loading…
Reference in New Issue
Block a user