NFSv4 client lock retry delay upper limit should be shorter
In a case the NFSv4 client cannot get a lock, the exponential backoff is implemented in nfs4_block_and_wait(). The upper limit of the delay is the lease_time of the NFSv4 server. According to the RFC 3530, chapter 8.4. Blocking Locks, to maintain fairness of the locking the client should retry to acquire lock faster than the lease period (lease_time).
With the current implementation (when the upper limit of the backoff time is lease_time), it might happen that the client is not fast enough and the server might grant the lock to some other client, causing our client to starve (possible for very long time).
To avoid this, the upper limit of backoff should be smaller than lease_time. I suggest to use similar calculation of the upper limit as it is used for the renew period - see nfs4_renew_lease_thread() for details. The renew period is roughly half of the lease_time.