From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Thu, 9 Feb 2012 20:31:36 +0000 (-0500)
Subject: NFSv4: Ensure we throw out bad delegation stateids on NFS4ERR_BAD_STATEID
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=b9f9a03150969e4bd9967c20bce67c4de769058f;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git

NFSv4: Ensure we throw out bad delegation stateids on NFS4ERR_BAD_STATEID

To ensure that we don't just reuse the bad delegation when we attempt to
recover the nfs4_state that received the bad stateid error.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
---

diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index a53f33b4ac3a..45392032e7bd 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1132,6 +1132,8 @@ void nfs4_schedule_stateid_recovery(const struct nfs_server *server, struct nfs4
 {
 	struct nfs_client *clp = server->nfs_client;
 
+	if (test_and_clear_bit(NFS_DELEGATED_STATE, &state->flags))
+		nfs_async_inode_return_delegation(state->inode, &state->stateid);
 	nfs4_state_mark_reclaim_nograce(clp, state);
 	nfs4_schedule_state_manager(clp);
 }