« Previous | Next » 

Revision cad0723b

IDcad0723b646fccab4b3e880f5bbaf26f4fba2324
Parent 3891c95e
Child 2a2e2610

Added by Iustin Pop about 9 years ago

Fix DRBD resize code

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: Iustin Pop <>
Reviewed-by: René Nussbaumer <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences