]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
nfsd: hook up nfsd_read to the nfsd_file cache
authorJeff Layton <jlayton@poochiereds.net>
Tue, 20 Oct 2015 17:33:46 +0000 (13:33 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 23 Oct 2015 19:57:41 +0000 (15:57 -0400)
Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/vfs.c

index bd015974bffe699d9fb86ab4ab29b3e21e90c6f7..688e45fc5ddf40c6fabdc5d780b1b1e377efd954 100644 (file)
@@ -1002,20 +1002,15 @@ 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;
-
-       err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
-       if (err)
-               return err;
-
-       ra = nfsd_init_raparms(file);
-       err = nfsd_vfs_read(rqstp, file, offset, vec, vlen, count);
-       if (ra)
-               nfsd_put_raparams(file, ra);
-       fput(file);
+       __be32                  err;
+       struct nfsd_file        *nf;
 
+       err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_READ, &nf);
+       if (err == nfs_ok) {
+               err = nfsd_vfs_read(rqstp, nf->nf_file, offset, vec, vlen,
+                                       count);
+               nfsd_file_put(nf);
+       }
        return err;
 }