[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