[pnfs] [PATCH 09/11] nfs41: don't set session state in exchange id

andros at netapp.com andros at netapp.com
Fri Jul 11 10:39:16 EDT 2008


From: Andy Adamson <andros at netapp.com>

Since the clientid has expired, all compounds using sessions
associated with the stale clientid are trying to use bad sessions and
are in some stage of reset.

Signed-off-by: Andy Adamson<andros at netapp.com>
---
 fs/nfs/nfs4proc.c |   24 +++++++++---------------
 1 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index fd59406..f5aacaf 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -4326,7 +4326,15 @@ int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name,
 }
 
 #ifdef CONFIG_NFS_V4_1
-static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
+/*
+ * nfs4_proc_exchange_id()
+ *
+ * Since the clientid has expired, all compounds using sessions
+ * associated with the stale clientid will be returning
+ * NFS4ERR_BADSESSION in the sequence operation, and will therefore
+ * be in some phase of session reset.
+ */
+static int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
 {
 	nfs4_verifier verifier;
 	struct nfs41_exchange_id_args args = {
@@ -4400,20 +4408,6 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
 	return status;
 }
 
-static int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
-{
-	struct nfs_server *server;
-
-	/*
-	 * Since we're going to blow away the client id, invalidate all the
-	 * sessions that were associated with this clientid.
-	 */
-	list_for_each_entry(server, &clp->cl_superblocks, client_link)
-		nfs41_set_session_alloc(server->session);
-
-	return _nfs4_proc_exchange_id(clp, cred);
-}
-
 struct nfs4_get_lease_time_data {
 	struct nfs4_get_lease_time_args *args;
 	struct nfs4_get_lease_time_res *res;
-- 
1.5.4.1



More information about the pNFS mailing list