@@ -1003,27 +1003,19 @@ out_nfserr:
__be32 nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp,
loff_t offset, struct kvec *vec, int vlen, unsigned long *count)
{
- struct file *file;
- struct raparms *ra;
- __be32 err;
+ __be32 err;
+ struct nfsd_file *nf;
trace_read_start(rqstp, fhp, offset, vlen);
- err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
- if (err)
- return err;
-
- ra = nfsd_init_raparms(file);
-
- trace_read_opened(rqstp, fhp, offset, vlen);
- err = nfsd_vfs_read(rqstp, file, offset, vec, vlen, count);
- trace_read_io_done(rqstp, fhp, offset, vlen);
-
- if (ra)
- nfsd_put_raparams(file, ra);
- fput(file);
-
+ err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_READ, &nf);
+ if (err == nfs_ok) {
+ trace_read_opened(rqstp, fhp, offset, vlen);
+ err = nfsd_vfs_read(rqstp, nf->nf_file, offset, vec, vlen,
+ count);
+ trace_read_io_done(rqstp, fhp, offset, vlen);
+ nfsd_file_put(nf);
+ }
trace_read_done(rqstp, fhp, offset, vlen);
-
return err;
}
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com> --- fs/nfsd/vfs.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-)