NLM: don't reattempt GRANT_MSG when there is already an RPC in flight
authorJeff Layton <jlayton@redhat.com>
Wed, 6 Feb 2008 16:34:12 +0000 (11:34 -0500)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Sun, 10 Feb 2008 23:09:36 +0000 (18:09 -0500)
commit9706501e43a80ce48b319214a0a9e562deded35b
tree6b2d5ec807edea5806e9dd41f1109d8e8aac160c
parent90bd17c87821fe0e055e0f9a7446c2875f31eb4c
NLM: don't reattempt GRANT_MSG when there is already an RPC in flight

With the current scheme in nlmsvc_grant_blocked, we can end up with more
than one GRANT_MSG callback for a block in flight. Right now, we requeue
the block unconditionally so that a GRANT_MSG callback is done again in
30s. If the client is unresponsive, it can take more than 30s for the
call already in flight to time out.

There's no benefit to having more than one GRANT_MSG RPC queued up at a
time, so put it on the list with a timeout of NLM_NEVER before doing the
RPC call. If the RPC call submission fails, we requeue it with a short
timeout. If it works, then nlmsvc_grant_callback will end up requeueing
it with a shorter timeout after it completes.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
fs/lockd/svclock.c