diff options
| author | Christoph Hellwig <hch@sgi.com> | 2002-10-15 18:40:55 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-15 18:40:55 -0700 |
| commit | a233df9b39756b3cd23fd9697c4cf2bfa1227e36 (patch) | |
| tree | 5908ccc9c5fa25cfb05728ca2f9b25e7f51566ac | |
| parent | 49b0a15c7f59ec5d9cd0c4fde0f0f942b2cc5bcb (diff) | |
[PATCH] kNFSd: switch knfsd to vfs_read/vfs_write
Switch knfsd to vfs_read/vfs_write to work on aio-only filesystems.
This also gets stuff like the LSM checks and mandatory lock checking
for free.
| -rw-r--r-- | fs/nfsd/vfs.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 3f1e8df274e4..996d8994d808 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -589,8 +589,6 @@ nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, if (err) goto out; err = nfserr_perm; - if (!file.f_op->read) - goto out_close; inode = file.f_dentry->d_inode; #ifdef MSNFS if ((fhp->fh_export->ex_flags & NFSEXP_MSNFS) && @@ -602,11 +600,10 @@ nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, ra = nfsd_get_raparms(inode->i_dev, inode->i_ino); if (ra) file.f_ra = ra->p_ra; - file.f_pos = offset; oldfs = get_fs(); set_fs(KERNEL_DS); - err = file.f_op->read(&file, buf, *count, &file.f_pos); + err = vfs_read(&file, buf, *count, &offset); set_fs(oldfs); /* Write back readahead params */ @@ -648,8 +645,7 @@ nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, if (!cnt) goto out_close; err = nfserr_perm; - if (!file.f_op->write) - goto out_close; + #ifdef MSNFS if ((fhp->fh_export->ex_flags & NFSEXP_MSNFS) && (!lock_may_write(file.f_dentry->d_inode, offset, cnt))) @@ -679,11 +675,9 @@ nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, if (stable && !EX_WGATHER(exp)) file.f_flags |= O_SYNC; - file.f_pos = offset; /* set write offset */ - /* Write the data. */ oldfs = get_fs(); set_fs(KERNEL_DS); - err = file.f_op->write(&file, buf, cnt, &file.f_pos); + err = vfs_write(&file, buf, cnt, &offset); if (err >= 0) nfsdstats.io_write += cnt; set_fs(oldfs); |
