• Philipp Reisner's avatar
    drbd: More random to the connect logic · 80c6eed4
    Philipp Reisner authored
    Since the listening socket is open all the time, it was possible to
    get into stable "initial packet S crossed" loops.
    
    * when both sides realize in the drbd_socket_okay() call at the end
      of the loop that the other side closed the main socket you had
      the chance to get into a stable loop with repeated "packet S crossed"
      messages.
    
    * when both sides do not realize with the drbd_socket_okay() call at the end
      of the loop that the other side closed the main socket you had
      the chance to get into a stable loop with alternating "packet S crossed"
      "packet M crossed" messages.
    
    In order to break out these stable loops randomize the behaviour if
    such a crossing of P_INITIAL_DATA or P_INITIAL_META packets is detected.
    Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
    Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
    80c6eed4
drbd_receiver.c 145 KB