1. 09 11月, 2012 3 次提交
    • P
      drbd: Avoid NetworkFailure state during disconnect · b66623e3
      Philipp Reisner 提交于
      Disconnecting is a cluster wide state change. In case the peer node agrees
      to the state transition, it sends back the fact on the meta-data connection
      and closes both sockets.
      
      In case the node node that initiated the state transfer sees the closing
      action on the data-socket, before the P_STATE_CHG_REPLY packet, it was
      going into one of the network failure states.
      
      At least with the fencing option set to something else thatn "dont-care",
      the unclean shutdown of the connection causes a short IO freeze or
      a fence operation.
      Signed-off-by: NPhilipp Reisner <philipp.reisner@linbit.com>
      Signed-off-by: NLars Ellenberg <lars.ellenberg@linbit.com>
      b66623e3
    • P
      drbd: Finish requests that completed while IO was frozen · 8a0bab2a
      Philipp Reisner 提交于
      Requests of an acked epoch are stored on the barrier_acked_requests list. In
      case the private bio of such a request completes while IO on the drbd device
      is suspended [req_mod(completed_ok)] then the request stays there.
      
      When thawing IO because the fence_peer handler returned, then we use
      tl_clear() to apply the connection_lost_while_pending event to all requests
      on the transfer-log and the barrier_acked_requests list.
      
      Up to now the connection_lost_while_pending event was not applied
      on requests on the barrier_acked_requests list. Fixed that.
      
      I.e. now the connection_lost_while_pending and resend events are
      applied to requests on the barrier_acked_requests list. For that
      it is necessary that the resend event finishes (local only)
      READS correctly.
      Signed-off-by: NPhilipp Reisner <philipp.reisner@linbit.com>
      Signed-off-by: NLars Ellenberg <lars.ellenberg@linbit.com>
      8a0bab2a
    • L
      drbd: introduce stop-sector to online verify · 58ffa580
      Lars Ellenberg 提交于
      We now can schedule only a specific range of sectors for online verify,
      or interrupt a running verify without interrupting the connection.
      
      Had to bump the protocol version differently, we are now 101.
      Added verify_can_do_stop_sector() { protocol >= 97 && protocol != 100; }
      
      Also, the return value convention for worker callbacks has changed,
      we returned "true/false" for "keep the connection up" in 8.3,
      we return 0 for success and <= for failure in 8.4.
      Affected: receive_state()
      Signed-off-by: NPhilipp Reisner <philipp.reisner@linbit.com>
      Signed-off-by: NLars Ellenberg <lars.ellenberg@linbit.com>
      58ffa580
  2. 08 11月, 2012 37 次提交