]> git.baikalelectronics.ru Git - kernel.git/commitdiff
nfsd: hook up nfsd_read to the nfsd_file cache
authorJeff Layton <jeff.layton@primarydata.com>
Sun, 18 Aug 2019 18:18:50 +0000 (14:18 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 19 Aug 2019 15:00:40 +0000 (11:00 -0400)
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/vfs.c

index 2f5b52004a180164f466798db2d5ed669dd75e1c..8593c642333691ba54cec9cc837bd8e0917af94a 100644 (file)
@@ -1071,25 +1071,22 @@ 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 nfsd_file        *nf;
        struct file *file;
-       struct raparms  *ra;
        __be32 err;
 
        trace_nfsd_read_start(rqstp, fhp, offset, *count);
-       err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
+       err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_READ, &nf);
        if (err)
                return err;
 
-       ra = nfsd_init_raparms(file);
-
+       file = nf->nf_file;
        if (file->f_op->splice_read && test_bit(RQ_SPLICE_OK, &rqstp->rq_flags))
                err = nfsd_splice_read(rqstp, fhp, file, offset, count);
        else
                err = nfsd_readv(rqstp, fhp, file, offset, vec, vlen, count);
 
-       if (ra)
-               nfsd_put_raparams(file, ra);
-       fput(file);
+       nfsd_file_put(nf);
 
        trace_nfsd_read_done(rqstp, fhp, offset, *count);