diff options
-rw-r--r-- | fs/lockd/svclock.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 2f4d8fa66689..82db7b323b83 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c | |||
@@ -763,11 +763,20 @@ callback: | |||
763 | dprintk("lockd: GRANTing blocked lock.\n"); | 763 | dprintk("lockd: GRANTing blocked lock.\n"); |
764 | block->b_granted = 1; | 764 | block->b_granted = 1; |
765 | 765 | ||
766 | /* Schedule next grant callback in 30 seconds */ | 766 | /* keep block on the list, but don't reattempt until the RPC |
767 | nlmsvc_insert_block(block, 30 * HZ); | 767 | * completes or the submission fails |
768 | */ | ||
769 | nlmsvc_insert_block(block, NLM_NEVER); | ||
768 | 770 | ||
769 | /* Call the client */ | 771 | /* Call the client -- use a soft RPC task since nlmsvc_retry_blocked |
770 | nlm_async_call(block->b_call, NLMPROC_GRANTED_MSG, &nlmsvc_grant_ops); | 772 | * will queue up a new one if this one times out |
773 | */ | ||
774 | error = nlm_async_call(block->b_call, NLMPROC_GRANTED_MSG, | ||
775 | &nlmsvc_grant_ops); | ||
776 | |||
777 | /* RPC submission failed, wait a bit and retry */ | ||
778 | if (error < 0) | ||
779 | nlmsvc_insert_block(block, 10 * HZ); | ||
771 | } | 780 | } |
772 | 781 | ||
773 | /* | 782 | /* |