In step 3 I used following commands: on primary vm console: {"execute": "drive-mirror", "arguments":{ "device": "colo-disk0", "job-id": "resync", "target": "nbd://169.254.66.10:9999/parent0", "mode": "existing","format":"raw","sync":"full"} }
// till the job ready { "execute": "query-block-jobs" } {"execute": "stop"} {"execute": "block-job-cancel", "arguments":{ "device": "resync"} } {'execute': 'human-monitor-command', 'arguments': {'command-line': 'drive_add -n buddy driver=replication,mode=primary,file.driver=nbd,file.host=169.254.66.10,file.port=9999,file.export=parent0,node-name=replication0'}} {'execute': 'x-blockdev-change', 'arguments':{'parent': 'colo-disk0', 'node': 'replication0' } } {'execute': 'migrate-set-capabilities', 'arguments': {'capabilities': [ {'capability': 'x-colo', 'state': true } ] } } {'execute': 'migrate', 'arguments': {'uri': 'tcp:169.254.66.10:9998' } } { "execute": "migrate-set-parameters" , "arguments":{ "x-checkpoint-delay": 10000 } } -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1881231 Title: colo: Can not recover colo after svm failover twice Status in QEMU: New Bug description: Hi Expert, x-blockdev-change met some error, during testing colo Host os: CentOS Linux release 7.6.1810 (Core) Reproduce steps: 1. create colo vm following https://github.com/qemu/qemu/blob/master/docs/COLO-FT.txt 2. kill secondary vm and remove the nbd child from the quorum to wait for recover type those commands on primary vm console: { 'execute': 'x-blockdev-change', 'arguments': {'parent': 'colo-disk0', 'child': 'children.1'}} { 'execute': 'human-monitor-command','arguments': {'command-line': 'drive_del replication0'}} { 'execute': 'x-colo-lost-heartbeat'} 3. recover colo 4. kill secondary vm again after recover colo and type same commands as step 2: { 'execute': 'x-blockdev-change', 'arguments': {'parent': 'colo-disk0', 'child': 'children.1'}} { 'execute': 'human-monitor-command','arguments': {'command-line': 'drive_del replication0'}} { 'execute': 'x-colo-lost-heartbeat'} but the first command got error { 'execute': 'x-blockdev-change', 'arguments': {'parent': 'colo-disk0', 'child': 'children.1'}} {"error": {"class": "GenericError", "desc": "Node 'colo-disk0' does not have child 'children.1'"}} according to https://www.qemu.org/docs/master/qemu-qmp-ref.html Command: x-blockdev-change Dynamically reconfigure the block driver state graph. It can be used to add, remove, insert or replace a graph node. Currently only the Quorum driver implements this feature to add or remove its child. This is useful to fix a broken quorum child. It seems x-blockdev-change not worked as expected. Thanks. To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1881231/+subscriptions