1. 05 Jul, 2012 1 commit
    • Iustin Pop's avatar
      Fix DRBD resize code · cad0723b
      Iustin Pop authored
      
      
      There are two bugs in the current resize code, affecting mostly DRBD.
      
      First, due to bugs in old DRBD versions (pre 8.0.14), the code currently
      calls `drbdsetup resize' on both the primary or secondary. However,
      this is actually wrong per current DRBD (from drbdsetup(8)):
      
           resize
             This causes DRBD to reexamine the size of the device's backing
             storage device. To actually do online growing you need to
             extend the backing storages on both devices and call the resize
             command on one of your nodes.
      
      So calling it just on the primary node should be enough. However, we
      can't simply remove the calls to the secondary nodes, since that would
      break the growth of the underlying storage (LVM) on the
      secondary. Which leads to the second existing bug: we call resize on
      each node, even before finish the growth of the underlying
      storage. This can leads to all kind of issues if DRDB is not well
      behaved.
      
      So to fix both these bugs, we have to extend the current RPC call with
      another parameter, which denotes whether to extend the actual backing
      storage or just the "logical" one (DRBD being the only one; MD would
      be another, if implemented). This allows us to do the growth in two
      steps, first the backing store on all nodes, then the logical storage
      on just the primary node.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarRené Nussbaumer <rn@google.com>
      cad0723b
  2. 19 Jun, 2012 1 commit
    • Guido Trotter's avatar
      Allow single-homed <-> multi-homed transitions · 79829d23
      Guido Trotter authored
      
      
      To change the cluster from single homed to multi homed or vice versa one
      must target the master node first, and pass the --force option. All
      other nodes then will work as long as they are reachable by the master.
      
      Note that this will also prevent a node to be set to single-homed if the
      master is multi-homed, which wasn't disallowed before, and warn if a
      single-homed <-> multi-homed transition happens.
      
      Also note that it's still theoretically possible to flip a cluster
      inadvertently by changing the master node this way, and then doing a
      master failover before fixing the other nodes.
      Signed-off-by: default avatarGuido Trotter <ultrotter@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      79829d23
  3. 14 Jun, 2012 1 commit
  4. 08 Jun, 2012 1 commit
  5. 01 Jun, 2012 1 commit
    • Iustin Pop's avatar
      Fix a type issue and bad logic in cluster verification · e375fb61
      Iustin Pop authored
      Commit 2e04d454
      
       introduced the new offline state for the instance
      state, but being a big monolithic patch it sneaked in something that
      doesn't make sense.
      
      The checks for extra instances (either wrongly up or just unknown) are
      done purely on a name-basis, not on objects, so the types there are
      wrong. Furthermore, they have no relation to the admin state of the
      instance, so we just drop the entire if block. We keep the increment
      of the offline instance count, but move it to a different loop over
      instances.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      e375fb61
  6. 22 May, 2012 2 commits
  7. 15 May, 2012 3 commits
  8. 14 May, 2012 3 commits
  9. 11 May, 2012 2 commits
  10. 10 May, 2012 8 commits
  11. 26 Apr, 2012 1 commit
  12. 20 Apr, 2012 2 commits
  13. 19 Apr, 2012 1 commit
  14. 16 Apr, 2012 1 commit
  15. 11 Apr, 2012 3 commits
    • Iustin Pop's avatar
      Fix extra whitespace · 612f7fd4
      Iustin Pop authored
      
      
      Sorry, didn't catch this before…
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarRené Nussbaumer <rn@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      (cherry picked from commit 54b010ca
      
      )
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      612f7fd4
    • Dimitris Aragiorgis's avatar
      Further fixes concerning drbd port release · 42f25b0b
      Dimitris Aragiorgis authored
      Commit 3b3b1bca does not entirely fix the bug introduced in commit
      f396ad8c
      
      . It fixes consistency of config data in permanent storage, but
      does not ensure consistency in data held in runtime memory of masterd.
      
      The bug of duplicate ports is still triggered when LUInstanceRemove()
      invokes _RemoveDisks() and this returns False (in case
      call_blockdev_remove RPC fails). The drbd ports get returned in the
      pool, but execution is aborted and RemoveInstance() is never invoked.
      
      Due to the fact that port handling is not done with
      TemporaryReservationManager, ensure that ports are released, only if
      disk related config data is deleted.
      
      In _RemoveDisks() release ports only if all RPCs succeed.
      
      Extend _RemoveDisks() to include ignore_failures argument passed by
      _RemoveInstance() to handle the ports appropriately.
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      42f25b0b
    • Dimitris Aragiorgis's avatar
      Fix a bug concerning TCP port release · 2522b7c4
      Dimitris Aragiorgis authored
      Commit f396ad8c
      
       returns the TCP port used by DRBD disk back to the
      TCP/UDP port pool using AddTcpUdpPort().
      
      However, AddTcpUdpPort() writes the config on every invocation,
      using _WriteConfig(). This causes two problems:
      
       * it causes critical errors logged by VerifyConfig(), after the DRBD
         disk removal, and until the actual instance removal.
       * if the code following AddTcpUdpPort() fails, the port is already
         returned back the pool, which causes the port to have duplicates
         (inconsistent config).
      
      AddTcpUdpPort() is invoked in three cases:
      
       * during InstanceRemove() through _RemoveDisks().
       * during InstanceSetParams() in case of disk removal.
       * during InstanceSetParams() through _ConvertDrbdToPlain().
      
      This commit fixes the problem by removing the _WriteConfig() call from
      AddTcpUdpPort(), delegate it to Update() via the
      TemporaryReservationManager and ensure AddTcpUdpPort() precedes
      Update().
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      [iustin@google.com: small comments adjustements]
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      (cherry picked from commit 3b3b1bca)
      2522b7c4
  16. 30 Mar, 2012 1 commit
  17. 29 Mar, 2012 1 commit
    • Dimitris Aragiorgis's avatar
      Fix a bug concerning TCP port release · 3b3b1bca
      Dimitris Aragiorgis authored
      Commit f396ad8c
      
       returns the TCP port used by DRBD disk back to the
      TCP/UDP port pool using AddTcpUdpPort().
      
      However, AddTcpUdpPort() writes the config on every invocation,
      using _WriteConfig(). This causes two problems:
      
       * it causes critical errors logged by VerifyConfig(), after the DRBD
         disk removal, and until the actual instance removal.
       * if the code following AddTcpUdpPort() fails, the port is already
         returned back the pool, which causes the port to have duplicates
         (inconsistent config).
      
      AddTcpUdpPort() is invoked in three cases:
      
       * during InstanceRemove() through _RemoveDisks().
       * during InstanceSetParams() in case of disk removal.
       * during InstanceSetParams() through _ConvertDrbdToPlain().
      
      This commit fixes the problem by removing the _WriteConfig() call from
      AddTcpUdpPort(), delegate it to Update() via the
      TemporaryReservationManager and ensure AddTcpUdpPort() precedes
      Update().
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      [iustin@google.com: small comments adjustements]
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      3b3b1bca
  18. 28 Mar, 2012 3 commits
  19. 23 Mar, 2012 3 commits
  20. 22 Mar, 2012 1 commit