0257ef1 sanlock: tolerate longer read delays in renewal

Authored and Committed by teigland 8 years ago
    sanlock: tolerate longer read delays in renewal
    
    Previously, a renewal read that timed out was abandoned and
    then retried.  If the first read actually completed during
    the second (retried) read, the first would be ignored, despite
    the fact that it could be used.
    
    Now, a timed out read is given an extra io timeout interval to
    complete as part of the subsequent renewal retry.  If the first
    read completes during the first phase of the second retry read,
    it will be used.
    
    This effectively doubles the length of time that renewal reads
    can persistently take without having any negative effect on
    the operation of the lockspace.
    
    If read io was persistently taking just longer than the io
    timeout, lease renewal would never get beyond the read phase,
    and the lockspace would enter recovery mode.  Now, the read
    io can be persistently delayed by up to twice the io timeout
    before this happens.  Furthermore, the extended timeout for
    the read can be configured to be even longer, to compensate
    for reads that are persistently delayed even longer.  The
    effect of extending the read timeout is that the time allowed
    for the renewal write to complete is reduced.  The read and
    the write for a renewal must still both complete within
    the same time limit before the renewal is considered to
    have failed and the lockspace enters recovery mode.
    
        
file modified
+2 -0
file modified
+12 -2
file modified
+3 -2
file modified
+1 -1
file modified
+5 -0
file modified
+8 -0
file modified
+3 -0
file modified
+3 -0