|
@@ -763,11 +763,20 @@ callback:
|
|
dprintk("lockd: GRANTing blocked lock.\n");
|
|
dprintk("lockd: GRANTing blocked lock.\n");
|
|
block->b_granted = 1;
|
|
block->b_granted = 1;
|
|
|
|
|
|
- /* Schedule next grant callback in 30 seconds */
|
|
|
|
- nlmsvc_insert_block(block, 30 * HZ);
|
|
|
|
|
|
+ /* keep block on the list, but don't reattempt until the RPC
|
|
|
|
+ * completes or the submission fails
|
|
|
|
+ */
|
|
|
|
+ nlmsvc_insert_block(block, NLM_NEVER);
|
|
|
|
|
|
- /* Call the client */
|
|
|
|
- nlm_async_call(block->b_call, NLMPROC_GRANTED_MSG, &nlmsvc_grant_ops);
|
|
|
|
|
|
+ /* Call the client -- use a soft RPC task since nlmsvc_retry_blocked
|
|
|
|
+ * will queue up a new one if this one times out
|
|
|
|
+ */
|
|
|
|
+ error = nlm_async_call(block->b_call, NLMPROC_GRANTED_MSG,
|
|
|
|
+ &nlmsvc_grant_ops);
|
|
|
|
+
|
|
|
|
+ /* RPC submission failed, wait a bit and retry */
|
|
|
|
+ if (error < 0)
|
|
|
|
+ nlmsvc_insert_block(block, 10 * HZ);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|