aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4file.c
diff options
context:
space:
mode:
authorAnna Schumaker <Anna.Schumaker@netapp.com>2014-09-26 13:58:48 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-09-30 16:24:56 -0400
commit1c6dcbe5ceff81c2cf8d929646af675cd59fe7c0 (patch)
tree1e432e1decca1b3a6de427db31db5737d997a7f5 /fs/nfs/nfs4file.c
parent4a3a0ebad1360696125bf34d89de55d71c4d0eaa (diff)
NFS: Implement SEEK
The SEEK operation is used when an application makes an lseek call with either the SEEK_HOLE or SEEK_DATA flags set. I fall back on nfs_file_llseek() if the server does not have SEEK support. Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/nfs4file.c')
-rw-r--r--fs/nfs/nfs4file.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index a816f0627a6c..4dffa3a64731 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -8,6 +8,10 @@
8#include "fscache.h" 8#include "fscache.h"
9#include "pnfs.h" 9#include "pnfs.h"
10 10
11#ifdef CONFIG_NFS_V4_2
12#include "nfs42.h"
13#endif
14
11#define NFSDBG_FACILITY NFSDBG_FILE 15#define NFSDBG_FACILITY NFSDBG_FILE
12 16
13static int 17static int
@@ -115,8 +119,29 @@ nfs4_file_fsync(struct file *file, loff_t start, loff_t end, int datasync)
115 return ret; 119 return ret;
116} 120}
117 121
122#ifdef CONFIG_NFS_V4_2
123static loff_t nfs4_file_llseek(struct file *filep, loff_t offset, int whence)
124{
125 loff_t ret;
126
127 switch (whence) {
128 case SEEK_HOLE:
129 case SEEK_DATA:
130 ret = nfs42_proc_llseek(filep, offset, whence);
131 if (ret != -ENOTSUPP)
132 return ret;
133 default:
134 return nfs_file_llseek(filep, offset, whence);
135 }
136}
137#endif /* CONFIG_NFS_V4_2 */
138
118const struct file_operations nfs4_file_operations = { 139const struct file_operations nfs4_file_operations = {
140#ifdef CONFIG_NFS_V4_2
141 .llseek = nfs4_file_llseek,
142#else
119 .llseek = nfs_file_llseek, 143 .llseek = nfs_file_llseek,
144#endif
120 .read = new_sync_read, 145 .read = new_sync_read,
121 .write = new_sync_write, 146 .write = new_sync_write,
122 .read_iter = nfs_file_read, 147 .read_iter = nfs_file_read,