diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-06-25 17:57:39 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-05 19:11:08 -0400 |
commit | e95fc4a06983c14273a39d26aad9cc5a8a09ff64 (patch) | |
tree | b5a1fa10278be617175f2c8cb99ddf0cad3b85e8 /fs | |
parent | 837bb1d752d92ea4d870877ffbd6ec5cf76624b3 (diff) | |
download | op-kernel-dev-e95fc4a06983c14273a39d26aad9cc5a8a09ff64.zip op-kernel-dev-e95fc4a06983c14273a39d26aad9cc5a8a09ff64.tar.gz |
NFSv4.2: llseek(SEEK_HOLE) and llseek(SEEK_DATA) don't require data sync
We want to ensure that we write the cached data to the server, but
don't require it be synced to disk. If the server reboots, we will
get a stateid error, which will cause us to retry anyway.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs42proc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c index b7d457c..616dc25 100644 --- a/fs/nfs/nfs42proc.c +++ b/fs/nfs/nfs42proc.c @@ -269,7 +269,11 @@ static loff_t _nfs42_proc_llseek(struct file *filep, if (status) return status; - nfs_wb_all(inode); + status = nfs_filemap_write_and_wait_range(inode->i_mapping, + offset, LLONG_MAX); + if (status) + return status; + status = nfs4_call_sync(server->client, server, &msg, &args.seq_args, &res.seq_res, 0); if (status == -ENOTSUPP) |