[openstack-dev] [nova] [libvirt] Debugging blockRebase() - "active block copy not ready for pivot"
Kashyap Chamarthy
kchamart at redhat.com
Mon Oct 10 11:26:30 UTC 2016
On Fri, Oct 07, 2016 at 03:32:14PM -0500, Matt Riedemann wrote:
> On 10/6/2016 7:58 AM, Kashyap Chamarthy wrote:
> > ---------------------------------------------------------------------
> > We expose the state of the copy job in the XML and forward the READY
> > event from qemu to the users.
> >
> > A running copy job exposes itself in the xml as:
> >
> > <disk type='file' device='cdrom'>
> > <driver name='qemu' type='raw'/>
> > <source file='/var/lib/libvirt/images/systemrescuecd-x86-4.8.0.iso'/>
> > <backingStore/>
> > <mirror type='file' file='/tmp/ble.img' format='raw' job='copy'>
> > <format type='raw'/>
> > <source file='/tmp/ble.img'/>
> > </mirror>
> > [...]
> > </disk>
> >
> > While the ready copy job is exposed as:
> >
> > <disk type='file' device='cdrom'>
> > <driver name='qemu' type='raw'/>
> > <source file='/var/lib/libvirt/images/systemrescuecd-x86-4.8.0.iso'/>
> > <backingStore/>
> > <mirror type='file' file='/tmp/ble.img' format='raw' job='copy' ready='yes'>
> > <format type='raw'/>
> > <source file='/tmp/ble.img'/>
> > </mirror>
> > [...]
> > </disk>
[...]
> Thanks for the great libvirtd log analysis, that's really helpful see what's
> going on and where we fail.
Took some time to write that, glad to know that at least one person has
read it :-)
> I've replied in Matthew's patch, which I think we can get in now regardless
> and backport.
Yes, noticed it just now.
> As for the fix, it sounds like mdbooth is going to work on the event
> listener code, which I'm hesitant to backport, but honestly this is such a
> latent broken flow that I don't think we really need to backport any fixes,
> at least for the event listener work to fix this long-term. The swap-volume
> test is disabled by default in Tempest and we enable it in devstack, so we
> can control which CI environments it runs in.
Agreed.
Also, maybe you have noticed, given Eric's reply on this thread (and the
upstream libvir-list), it is agreed that virDomainGetBlockJobInfo()
should be fixed "to quit reporting cur==end when ready:false". This
allows the existing Nova code work correctly without any changes.
Discusion on Eric's reply in this thread:
http://lists.openstack.org/pipermail/openstack-dev/2016-October/105194.html
And upstream libvir-list
https://www.redhat.com/archives/libvir-list/2016-October/msg00347.html
--
/kashyap
More information about the OpenStack-dev
mailing list