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>