Hi Ye, Thank you for your test and report, I will try to fix this issue.
Thanks Zhang Chen > -----Original Message----- > From: Qemu-devel <qemu-devel- > bounces+chen.zhang=intel....@nongnu.org> On Behalf Of ye.zou > Sent: Friday, May 29, 2020 5:47 PM > To: qemu-devel@nongnu.org > Subject: [Bug 1881231] Re: colo: Can not recover colo after svm failover twice > > 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