NFS: Add sequence_priviliged_ops for nfs4_proc_sequence()
authorBryan Schumaker <bjschuma@netapp.com>
Mon, 12 Nov 2012 21:55:38 +0000 (16:55 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 21 Nov 2012 04:34:54 +0000 (23:34 -0500)
commit6bdb5f213c4344324f600dde885f25768fbd14db
tree6823ca803d7b6b26c81118eb91b0e4e825c9a78f
parentf994c43d19a9116727d4c228d3f13db595bff562
NFS: Add sequence_priviliged_ops for nfs4_proc_sequence()

If I mount an NFS v4.1 server to a single client multiple times and then
run xfstests over each mountpoint I usually get the client into a state
where recovery deadlocks.  The server informs the client of a
cb_path_down sequence error, the client then does a
bind_connection_to_session and checks the status of the lease.

I found that bind_connection_to_session sets the NFS4_SESSION_DRAINING
flag on the client, but this flag is never unset before
nfs4_check_lease() reaches nfs4_proc_sequence().  This causes the client
to deadlock, halting all NFS activity to the server.  nfs4_proc_sequence()
is only called by the state manager, so I can change it to run in privileged
mode to bypass the NFS4_SESSION_DRAINING check and avoid the deadlock.

Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
fs/nfs/nfs4proc.c