[DRBD-user] Reproducible ASSERT( os.conn == C_WF_REPORT_PARAMS )

Brian Candler b.candler at pobox.com
Tue Jul 16 15:55:16 CEST 2013

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


I missed some bits where drbdsetup xxx secondary and drbdsetup xxx 
secondary are called. My attempt at decoding the call tree is at the end 
of the message, but in summary:

* Check /proc/drbd on target, require network is Connected and local 
disk is UpToDate. [No check on source?]
* on target: drbdsetup <dev> secondary (just to be sure?). No wait or 
status check?
* on both nodes: drbdsetup <dev> disconnect. No wait or status check?
* on both nodes: drbdsetup <dev> connect. Poll /proc/drbd until 
connected or syncing
* wait until sync complete
... rest not relevant as it doesn't get this far when it fails

Regards,

Brian.

_ExecMigration(...) [cmdlib.py]
   on target node:
   _CheckDiskConsistency(...) [cmdlib.py]
     _CheckDiskConsistencyInner(...) [cmdlib.py]
        AFAICS it seems to call down through to GetSyncStatus [bdev.py]
        which calls GetProcStatus which reads */proc/drbd*. Then it returns
        is_degraded=True if (not is_connected or not is_disk_uptodate)
   _EnsureSecondary(target_node) [cmdlib.py]
     for target node only:
     call_blockdev_close
       perspective_blockdev_close [server/noded.py]
         BlockdevClose [backend.py]
           Close [bdev.py]
*            drbdsetup <dev> secondary*
   _GoStandalone() [cmdlib.py]
     for both nodes:
     call_drbd_disconnect_net
       perspective_drbd_disconnect_net [server/noded.py]
         DrbdDisconnectNet [backend.py]
           DisconnectNet [bdev.py]
             _ShutdownNet [bdev.py]
*              drbdsetup <dev> disconnect*
   _GoReconnect(True) [cmdlib.py]
     for both nodes:
     call_drbd_attach_net
       perspective_drbd_attach_net [server/noded.py]
         DrbdAttachNet [backend.py]
           AttachNet [bdev.py]
           GetProcStatus [bdev.py] - repeat until is_connected or 
is_in_resync
             _GetProcData - reads */proc/drbd*
             _MassageProcData - groups by device
             _DRBD8Status(..) - parses one device line
           Open [bdev.py]
***drbdsetup <dev> primary*
   _WaitUntilSync()
     for all nodes: repeat until all_done, display progress message
     call_drbd_wait_sync
       perspective_drbd_wait_sync
         DrbdWaitSync
           GetProcStatus
             _GetProcData - reads */proc/drbd*
             _MassageProcData - groups by device
             _DRBD8Status(..) - parses one device line
... do the migration [but when there's a problem it doesn't get this far]
   _EnsureSecondary(source_node)
   _WaitUntilSync()
   _GoStandalone()
   _GoReconnect(False)
   _WaitUntilSync()

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linbit.com/pipermail/drbd-user/attachments/20130716/6ede5126/attachment.htm>


More information about the drbd-user mailing list