diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/nfsd/nfs3proc.c | 2 | ||||
| -rw-r--r-- | fs/nfsd/nfs4xdr.c | 2 | ||||
| -rw-r--r-- | fs/nfsd/nfsproc.c | 2 | ||||
| -rw-r--r-- | fs/nfsd/vfs.c | 19 | ||||
| -rw-r--r-- | fs/nfsd/vfs.h | 4 |
5 files changed, 16 insertions, 13 deletions
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index 9ae93317abe4..5b7e3021e06b 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c | |||
| @@ -168,7 +168,7 @@ nfsd3_proc_read(struct svc_rqst *rqstp, struct nfsd3_readargs *argp, | |||
| 168 | svc_reserve_auth(rqstp, ((1 + NFS3_POST_OP_ATTR_WORDS + 3)<<2) + resp->count +4); | 168 | svc_reserve_auth(rqstp, ((1 + NFS3_POST_OP_ATTR_WORDS + 3)<<2) + resp->count +4); |
| 169 | 169 | ||
| 170 | fh_copy(&resp->fh, &argp->fh); | 170 | fh_copy(&resp->fh, &argp->fh); |
| 171 | nfserr = nfsd_read(rqstp, &resp->fh, NULL, | 171 | nfserr = nfsd_read(rqstp, &resp->fh, |
| 172 | argp->offset, | 172 | argp->offset, |
| 173 | rqstp->rq_vec, argp->vlen, | 173 | rqstp->rq_vec, argp->vlen, |
| 174 | &resp->count); | 174 | &resp->count); |
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 835924f5ca54..f8931acb05f3 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
| @@ -2630,7 +2630,7 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, | |||
| 2630 | } | 2630 | } |
| 2631 | read->rd_vlen = v; | 2631 | read->rd_vlen = v; |
| 2632 | 2632 | ||
| 2633 | nfserr = nfsd_read(read->rd_rqstp, read->rd_fhp, read->rd_filp, | 2633 | nfserr = nfsd_read_file(read->rd_rqstp, read->rd_fhp, read->rd_filp, |
| 2634 | read->rd_offset, resp->rqstp->rq_vec, read->rd_vlen, | 2634 | read->rd_offset, resp->rqstp->rq_vec, read->rd_vlen, |
| 2635 | &maxcount); | 2635 | &maxcount); |
| 2636 | 2636 | ||
diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 1edb78b96c5f..08e17264784b 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c | |||
| @@ -144,7 +144,7 @@ nfsd_proc_read(struct svc_rqst *rqstp, struct nfsd_readargs *argp, | |||
| 144 | svc_reserve_auth(rqstp, (19<<2) + argp->count + 4); | 144 | svc_reserve_auth(rqstp, (19<<2) + argp->count + 4); |
| 145 | 145 | ||
| 146 | resp->count = argp->count; | 146 | resp->count = argp->count; |
| 147 | nfserr = nfsd_read(rqstp, fh_copy(&resp->fh, &argp->fh), NULL, | 147 | nfserr = nfsd_read(rqstp, fh_copy(&resp->fh, &argp->fh), |
| 148 | argp->offset, | 148 | argp->offset, |
| 149 | rqstp->rq_vec, argp->vlen, | 149 | rqstp->rq_vec, argp->vlen, |
| 150 | &resp->count); | 150 | &resp->count); |
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 3458a8f596f1..1709138affb1 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
| @@ -1065,7 +1065,12 @@ out: | |||
| 1065 | return err; | 1065 | return err; |
| 1066 | } | 1066 | } |
| 1067 | 1067 | ||
| 1068 | static __be32 nfsd_open_read(struct svc_rqst *rqstp, struct svc_fh *fhp, | 1068 | /* |
| 1069 | * Read data from a file. count must contain the requested read count | ||
| 1070 | * on entry. On return, *count contains the number of bytes actually read. | ||
| 1071 | * N.B. After this call fhp needs an fh_put | ||
| 1072 | */ | ||
| 1073 | __be32 nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, | ||
| 1069 | loff_t offset, struct kvec *vec, int vlen, unsigned long *count) | 1074 | loff_t offset, struct kvec *vec, int vlen, unsigned long *count) |
| 1070 | { | 1075 | { |
| 1071 | struct file *file; | 1076 | struct file *file; |
| @@ -1101,13 +1106,9 @@ static __be32 nfsd_open_read(struct svc_rqst *rqstp, struct svc_fh *fhp, | |||
| 1101 | return err; | 1106 | return err; |
| 1102 | } | 1107 | } |
| 1103 | 1108 | ||
| 1104 | /* | 1109 | /* As above, but use the provided file descriptor. */ |
| 1105 | * Read data from a file. count must contain the requested read count | ||
| 1106 | * on entry. On return, *count contains the number of bytes actually read. | ||
| 1107 | * N.B. After this call fhp needs an fh_put | ||
| 1108 | */ | ||
| 1109 | __be32 | 1110 | __be32 |
| 1110 | nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, | 1111 | nfsd_read_file(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, |
| 1111 | loff_t offset, struct kvec *vec, int vlen, | 1112 | loff_t offset, struct kvec *vec, int vlen, |
| 1112 | unsigned long *count) | 1113 | unsigned long *count) |
| 1113 | { | 1114 | { |
| @@ -1119,8 +1120,8 @@ nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, | |||
| 1119 | if (err) | 1120 | if (err) |
| 1120 | goto out; | 1121 | goto out; |
| 1121 | err = nfsd_vfs_read(rqstp, fhp, file, offset, vec, vlen, count); | 1122 | err = nfsd_vfs_read(rqstp, fhp, file, offset, vec, vlen, count); |
| 1122 | } else | 1123 | } else /* Note file may still be NULL in NFSv4 special stateid case: */ |
| 1123 | err = nfsd_open_read(rqstp, fhp, offset, vec, vlen, count); | 1124 | err = nfsd_read(rqstp, fhp, offset, vec, vlen, count); |
| 1124 | out: | 1125 | out: |
| 1125 | return err; | 1126 | return err; |
| 1126 | } | 1127 | } |
diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h index 217a62c2a357..9a370a5e36b7 100644 --- a/fs/nfsd/vfs.h +++ b/fs/nfsd/vfs.h | |||
| @@ -64,7 +64,9 @@ __be32 nfsd_commit(struct svc_rqst *, struct svc_fh *, | |||
| 64 | __be32 nfsd_open(struct svc_rqst *, struct svc_fh *, int, | 64 | __be32 nfsd_open(struct svc_rqst *, struct svc_fh *, int, |
| 65 | int, struct file **); | 65 | int, struct file **); |
| 66 | void nfsd_close(struct file *); | 66 | void nfsd_close(struct file *); |
| 67 | __be32 nfsd_read(struct svc_rqst *, struct svc_fh *, struct file *, | 67 | __be32 nfsd_read(struct svc_rqst *, struct svc_fh *, |
| 68 | loff_t, struct kvec *, int, unsigned long *); | ||
| 69 | __be32 nfsd_read_file(struct svc_rqst *, struct svc_fh *, struct file *, | ||
| 68 | loff_t, struct kvec *, int, unsigned long *); | 70 | loff_t, struct kvec *, int, unsigned long *); |
| 69 | __be32 nfsd_write(struct svc_rqst *, struct svc_fh *,struct file *, | 71 | __be32 nfsd_write(struct svc_rqst *, struct svc_fh *,struct file *, |
| 70 | loff_t, struct kvec *,int, unsigned long *, int *); | 72 | loff_t, struct kvec *,int, unsigned long *, int *); |
