summaryrefslogtreecommitdiff
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2015-10-21 16:07:21 -0500
committerTrond Myklebust <trond.myklebust@primarydata.com>2015-10-21 16:07:21 -0500
commita85240d2543e1947868d81aab44e36bea6bb876e (patch)
treee300e389493be01361d42ec7093093d69fa42d3c /fs/nfs/write.c
parent51e0164ebe374a26245312515af4ceae11bed4ae (diff)
parentf8417b481cce2bed4744fda733f2ff22278bd7ce (diff)
Merge branch 'bugfixes'
* bugfixes: NFSv4.1/pnfs: Retry through MDS when getting bad length of data nfs/blocklayout: Fix bad using of page offset in bl_read_pagelist NFS: Return directly if encode_sessionid fail NFS: Fix bad checking of max taglen in callback request NFS: Fix bad defines of callback response maxsize NFS: Use NFS4_MAX_SESSIONID_LEN directly for decode/encode sessionid NFS: Remove unneeded NFS_DEBUG checking before define NFSDBG_FACILITY NFS: Remove the left function defines in callback.h NFS: Remove the left global variable nfs_callback_tcpport NFS: Get rid of the unneeded addr stored in callback arguments nfsroot: make nfsroot to accept the 1024 bytes long directory name
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 75ab7622e0cc..7b9316406930 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -1505,6 +1505,13 @@ static void nfs_writeback_result(struct rpc_task *task,
task->tk_status = -EIO;
return;
}
+
+ /* For non rpc-based layout drivers, retry-through-MDS */
+ if (!task->tk_ops) {
+ hdr->pnfs_error = -EAGAIN;
+ return;
+ }
+
/* Was this an NFSv2 write or an NFSv3 stable write? */
if (resp->verf->committed != NFS_UNSTABLE) {
/* Resend from where the server left off */