NFSv4: Fix issues in nfs4_discover_server_trunking
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 5 Apr 2013 17:22:50 +0000 (13:22 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 5 Apr 2013 17:22:50 +0000 (13:22 -0400)
- Ensure that we exit with ENOENT if the call to ops->get_clid_cred()
  fails.
- Handle the case where ops->detect_trunking() exits with an
  unexpected error, and return EIO.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4state.c

index a30f51e..209df69 100644 (file)
@@ -1876,8 +1876,8 @@ int nfs4_discover_server_trunking(struct nfs_client *clp,
        i = 0;
 
        mutex_lock(&nfs_clid_init_mutex);
-       status  = -ENOENT;
 again:
+       status  = -ENOENT;
        cred = ops->get_clid_cred(clp);
        if (cred == NULL)
                goto out_unlock;
@@ -1916,6 +1916,11 @@ again:
        case -NFS4ERR_NOT_SAME: /* FixMe: implement recovery
                                 * in nfs4_exchange_id */
                status = -EKEYEXPIRED;
+               break;
+       default:
+               pr_warn("NFS: %s unhandled error %d. Exiting with error EIO\n",
+                               __func__, status);
+               status = -EIO;
        }
 
 out_unlock: