<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <meta charset="utf-8">
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">In that backend script,

add a loop before the promote,
that checks that the connection state really is "Connected",
and the disk state really is "UpToDate".

It is probably supposed to already wait in this fashion,
but apparently it does not.

</pre>
    Many thanks for your help! Here is what the code currently does,
    according to my reading of it.<br>
    <br>
    "* checking disk consistency between source and target"<br>
    <br>
    This is a hairy code path which could quite possibly be broken, but
    apparently it's checking that it's not degraded; which AFAICT means
    that connection state must be Connected and disk state must be
    UpToDate. Is this the bit which you think isn't being checked
    properly? If so I'll add some more debug in here.<br>
    <br>
    "* changing into standalone mode"<br>
    <br>
    - issue "drbdsetup &lt;dev&gt; disconnect"<br>
    - polls /proc/drbd until connection state is Standalone<br>
    - repeat for second device<br>
    <br>
    "* changing disks into multi-master mode"<br>
    <br>
    - issue "drbd setup &lt;dev&gt; &lt;local-f:h:p&gt;
    &lt;remove-f:h:p&gt; -A discard-zero-changes -B consensus
    --create-device -m"<br>
    - run "drbdsetup &lt;path&gt; show" repeatedly until it finds that
    local_addr/port and remote_addr/port are the expected values<br>
    - repeat for second device<br>
    <br>
    [At this point I don't see any checks for disk state]<br>
    <br>
    "* wait until resync is done"<br>
    <br>
    - poll /proc/drbd until connection state is one of the following<br>
    <br>
    &nbsp; CS_WFREPORTPARAMS = "WFReportParams"<br>
    &nbsp; CS_CONNECTED = "Connected"<br>
    &nbsp; CS_STARTINGSYNCS = "StartingSyncS"<br>
    &nbsp; CS_STARTINGSYNCT = "StartingSyncT"<br>
    &nbsp; CS_WFBITMAPS = "WFBitMapS"<br>
    &nbsp; CS_WFBITMAPT = "WFBitMapT"<br>
    &nbsp; CS_WFSYNCUUID = "WFSyncUUID"<br>
    &nbsp; CS_SYNCSOURCE = "SyncSource"<br>
    &nbsp; CS_SYNCTARGET = "SyncTarget"<br>
    &nbsp; CS_PAUSEDSYNCS = "PausedSyncS"<br>
    &nbsp; CS_PAUSEDSYNCT = "PausedSyncT"<br>
    <br>
    - repeat for second device<br>
    - print progress info and repeat until (I believe) the connection
    state is Connected<br>
    <br>
    So, does the promotion part (disconnect followed by reconnect in
    multi-master mode) look to be the correct approach for drbd 8.3? If
    so I'll concentrate on the "checking disk consistency" bit.<br>
    <br>
    Thanks,<br>
    <br>
    Brian.<br>
    <br>
  </body>
</html>