aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4filelayout.c
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2011-05-03 13:43:03 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-05-11 14:01:33 -0400
commita8a4ae3a899a6c0b4771cc57884800d8b76a6996 (patch)
tree762fa0cc26480ea302d1ade0a03f222fae958565 /fs/nfs/nfs4filelayout.c
parent9f381a61f58bb6487c93ce2233bb9992f8ea9211 (diff)
downloadkernel_goldelico_gta04-a8a4ae3a899a6c0b4771cc57884800d8b76a6996.zip
kernel_goldelico_gta04-a8a4ae3a899a6c0b4771cc57884800d8b76a6996.tar.gz
kernel_goldelico_gta04-a8a4ae3a899a6c0b4771cc57884800d8b76a6996.tar.bz2
NFSv41: Resend on NFS4ERR_RETRY_UNCACHED_REP
Free the slot and resend the RPC with new session <slot#,seq#>. For nfs4_async_handle_error, return -EAGAIN and set the task->tk_status to 0 to restart the async rpc in the rpc_restart_call_prepare state which resets the slot. For nfs4_handle_exception, retrying a call that uses nfs4_call_sync will reset the slot via nfs41_call_sync_prepare. For open/close/lock/locku/delegreturn/layoutcommit/unlink/rename/write cachethis is true, so these operations will not trigger an NFS4ERR_RETRY_UNCACHED_REP. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4filelayout.c')
-rw-r--r--fs/nfs/nfs4filelayout.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/nfs4filelayout.c b/fs/nfs/nfs4filelayout.c
index 6f8192f..7841ea6 100644
--- a/fs/nfs/nfs4filelayout.c
+++ b/fs/nfs/nfs4filelayout.c
@@ -117,6 +117,8 @@ static int filelayout_async_handle_error(struct rpc_task *task,
case -EKEYEXPIRED:
rpc_delay(task, FILELAYOUT_POLL_RETRY_MAX);
break;
+ case -NFS4ERR_RETRY_UNCACHED_REP:
+ break;
default:
dprintk("%s DS error. Retry through MDS %d\n", __func__,
task->tk_status);