NFSv4: Fix another potential state manager deadlock
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 9 Apr 2013 16:56:52 +0000 (12:56 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 9 Apr 2013 17:19:35 +0000 (13:19 -0400)
Don't hold the NFSv4 sequence id while we check for open permission.
The call to ACCESS may block due to reboot recovery.

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

index 26431cf62ddbc393fd5fe1e432742be37d06e12e..0ad025eb523bc6b651d82497c29a0d27ebdf3dac 100644 (file)
@@ -1046,6 +1046,7 @@ static struct nfs4_state *nfs4_try_open_cached(struct nfs4_opendata *opendata)
                /* Save the delegation */
                nfs4_stateid_copy(&stateid, &delegation->stateid);
                rcu_read_unlock();
+               nfs_release_seqid(opendata->o_arg.seqid);
                ret = nfs_may_open(state->inode, state->owner->so_cred, open_mode);
                if (ret != 0)
                        goto out;