diff options
Diffstat (limited to 'fs/nfs/file.c')
| -rw-r--r-- | fs/nfs/file.c | 91 |
1 files changed, 51 insertions, 40 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 0a1f8312b4dc..eca56d4b39c0 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c | |||
| @@ -40,48 +40,8 @@ | |||
| 40 | 40 | ||
| 41 | #define NFSDBG_FACILITY NFSDBG_FILE | 41 | #define NFSDBG_FACILITY NFSDBG_FILE |
| 42 | 42 | ||
| 43 | static int nfs_file_open(struct inode *, struct file *); | ||
| 44 | static int nfs_file_release(struct inode *, struct file *); | ||
| 45 | static loff_t nfs_file_llseek(struct file *file, loff_t offset, int origin); | ||
| 46 | static int nfs_file_mmap(struct file *, struct vm_area_struct *); | ||
| 47 | static ssize_t nfs_file_splice_read(struct file *filp, loff_t *ppos, | ||
| 48 | struct pipe_inode_info *pipe, | ||
| 49 | size_t count, unsigned int flags); | ||
| 50 | static ssize_t nfs_file_read(struct kiocb *, const struct iovec *iov, | ||
| 51 | unsigned long nr_segs, loff_t pos); | ||
| 52 | static ssize_t nfs_file_splice_write(struct pipe_inode_info *pipe, | ||
| 53 | struct file *filp, loff_t *ppos, | ||
| 54 | size_t count, unsigned int flags); | ||
| 55 | static ssize_t nfs_file_write(struct kiocb *, const struct iovec *iov, | ||
| 56 | unsigned long nr_segs, loff_t pos); | ||
| 57 | static int nfs_file_flush(struct file *, fl_owner_t id); | ||
| 58 | static int nfs_file_fsync(struct file *, loff_t, loff_t, int datasync); | ||
| 59 | static int nfs_check_flags(int flags); | ||
| 60 | static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl); | ||
| 61 | static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl); | ||
| 62 | static int nfs_setlease(struct file *file, long arg, struct file_lock **fl); | ||
| 63 | |||
| 64 | static const struct vm_operations_struct nfs_file_vm_ops; | 43 | static const struct vm_operations_struct nfs_file_vm_ops; |
| 65 | 44 | ||
| 66 | const struct file_operations nfs_file_operations = { | ||
| 67 | .llseek = nfs_file_llseek, | ||
| 68 | .read = do_sync_read, | ||
| 69 | .write = do_sync_write, | ||
| 70 | .aio_read = nfs_file_read, | ||
| 71 | .aio_write = nfs_file_write, | ||
| 72 | .mmap = nfs_file_mmap, | ||
| 73 | .open = nfs_file_open, | ||
| 74 | .flush = nfs_file_flush, | ||
| 75 | .release = nfs_file_release, | ||
| 76 | .fsync = nfs_file_fsync, | ||
| 77 | .lock = nfs_lock, | ||
| 78 | .flock = nfs_flock, | ||
| 79 | .splice_read = nfs_file_splice_read, | ||
| 80 | .splice_write = nfs_file_splice_write, | ||
| 81 | .check_flags = nfs_check_flags, | ||
| 82 | .setlease = nfs_setlease, | ||
| 83 | }; | ||
| 84 | |||
| 85 | const struct inode_operations nfs_file_inode_operations = { | 45 | const struct inode_operations nfs_file_inode_operations = { |
| 86 | .permission = nfs_permission, | 46 | .permission = nfs_permission, |
| 87 | .getattr = nfs_getattr, | 47 | .getattr = nfs_getattr, |
| @@ -886,3 +846,54 @@ static int nfs_setlease(struct file *file, long arg, struct file_lock **fl) | |||
| 886 | file->f_path.dentry->d_name.name, arg); | 846 | file->f_path.dentry->d_name.name, arg); |
| 887 | return -EINVAL; | 847 | return -EINVAL; |
| 888 | } | 848 | } |
| 849 | |||
| 850 | const struct file_operations nfs_file_operations = { | ||
| 851 | .llseek = nfs_file_llseek, | ||
| 852 | .read = do_sync_read, | ||
| 853 | .write = do_sync_write, | ||
| 854 | .aio_read = nfs_file_read, | ||
| 855 | .aio_write = nfs_file_write, | ||
| 856 | .mmap = nfs_file_mmap, | ||
| 857 | .open = nfs_file_open, | ||
| 858 | .flush = nfs_file_flush, | ||
| 859 | .release = nfs_file_release, | ||
| 860 | .fsync = nfs_file_fsync, | ||
| 861 | .lock = nfs_lock, | ||
| 862 | .flock = nfs_flock, | ||
| 863 | .splice_read = nfs_file_splice_read, | ||
| 864 | .splice_write = nfs_file_splice_write, | ||
| 865 | .check_flags = nfs_check_flags, | ||
| 866 | .setlease = nfs_setlease, | ||
| 867 | }; | ||
| 868 | |||
| 869 | #ifdef CONFIG_NFS_V4 | ||
| 870 | static int | ||
| 871 | nfs4_file_open(struct inode *inode, struct file *filp) | ||
| 872 | { | ||
| 873 | /* | ||
| 874 | * NFSv4 opens are handled in d_lookup and d_revalidate. If we get to | ||
| 875 | * this point, then something is very wrong | ||
| 876 | */ | ||
| 877 | dprintk("NFS: %s called! inode=%p filp=%p\n", __func__, inode, filp); | ||
| 878 | return -ENOTDIR; | ||
| 879 | } | ||
| 880 | |||
| 881 | const struct file_operations nfs4_file_operations = { | ||
| 882 | .llseek = nfs_file_llseek, | ||
| 883 | .read = do_sync_read, | ||
| 884 | .write = do_sync_write, | ||
| 885 | .aio_read = nfs_file_read, | ||
| 886 | .aio_write = nfs_file_write, | ||
| 887 | .mmap = nfs_file_mmap, | ||
| 888 | .open = nfs4_file_open, | ||
| 889 | .flush = nfs_file_flush, | ||
| 890 | .release = nfs_file_release, | ||
| 891 | .fsync = nfs_file_fsync, | ||
| 892 | .lock = nfs_lock, | ||
| 893 | .flock = nfs_flock, | ||
| 894 | .splice_read = nfs_file_splice_read, | ||
| 895 | .splice_write = nfs_file_splice_write, | ||
| 896 | .check_flags = nfs_check_flags, | ||
| 897 | .setlease = nfs_setlease, | ||
| 898 | }; | ||
| 899 | #endif /* CONFIG_NFS_V4 */ | ||
