• L
    drbd: fix disconnect/reconnect loop, if ping-timeout == ping-int · f36af18c
    Lars Ellenberg 提交于
    If there is no replication traffic within the idle timeout
    (ping-int seconds), DRBD will send a P_PING,
    and adjust the timeout to ping-timeout.
    
    If there is no P_PING_ACK received within this ping-timeout,
    DRBD finally drops the connection, and tries to re-establish it.
    
    To decide which timeout was active, we compared the current timeout
    with the ping-timeout, and dropped the connection, if that was the case.
    
    By default, ping-int is 10 seconds, ping-timeout is 500 ms.
    
    Unfortunately, if you configure ping-timeout to be the same as ping-int,
    expiry of the idle-timeout had been mistaken for a missing ping ack,
    and caused an immediate reconnection attempt.
    
    Fix:
    Allow both timeouts to be equal, use a local variable
    to store which timeout is active.
    Signed-off-by: NPhilipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: NLars Ellenberg <lars.ellenberg@linbit.com>
    f36af18c
drbd_receiver.c 128.7 KB