NFSv4.1: Don't call nfs4_schedule_state_recovery() unnecessarily
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 26 Jan 2010 20:42:38 +0000 (15:42 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 26 Jan 2010 20:42:38 +0000 (15:42 -0500)
Currently, nfs4_handle_exception() will call it twice if called with an
error of -NFS4ERR_STALE_CLIENTID, -NFS4ERR_STALE_STATEID or
-NFS4ERR_EXPIRED.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfs/nfs4proc.c

index be044b58e811a185884506ca9a1bda32d6ccbc68..afbfe673489b68d5f8e48b94e5e23a780382cb41 100644 (file)
@@ -256,12 +256,8 @@ static int nfs4_handle_exception(const struct nfs_server *server, int errorcode,
                        ret = nfs4_wait_clnt_recover(clp);
                        if (ret == 0)
                                exception->retry = 1;
-#if !defined(CONFIG_NFS_V4_1)
                        break;
-#else /* !defined(CONFIG_NFS_V4_1) */
-                       if (!nfs4_has_session(server->nfs_client))
-                               break;
-                       /* FALLTHROUGH */
+#if defined(CONFIG_NFS_V4_1)
                case -NFS4ERR_BADSESSION:
                case -NFS4ERR_BADSLOT:
                case -NFS4ERR_BAD_HIGH_SLOT:
@@ -274,7 +270,7 @@ static int nfs4_handle_exception(const struct nfs_server *server, int errorcode,
                        nfs4_schedule_state_recovery(clp);
                        exception->retry = 1;
                        break;
-#endif /* !defined(CONFIG_NFS_V4_1) */
+#endif /* defined(CONFIG_NFS_V4_1) */
                case -NFS4ERR_FILE_OPEN:
                        if (exception->timeout > HZ) {
                                /* We have retried a decent amount, time to