[libvirt-users] libvirtError: block copy still active: disk not ready for pivot yet

Kashyap Chamarthy kchamart at redhat.com
Thu Jan 5 10:16:42 UTC 2017


On Wed, Jan 04, 2017 at 07:16:03PM +0200, Ala Hino wrote:
> I understand that libvirt provides async events that are triggered once the
> block job reaches ready state and successfully pivots as it is reported by
> qemu.
> Whats the event that is triggered and what's the handler that we have to
> implement?

The exact event is: BLOCK_JOB_READY

Also, as Peter Krempa once pointed out, the above is exposed via XML:

  Libvirt 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>

> To be more specific, I am looking for the onEVENT callback method that is
> invoked when the event is fired.

Afraid, I don't know the exact callback you have to implement.  Perhaps
Peter or Eric Blake can say.

But some more related context (lots of reading), as the issue is a bit
more complicated.

You might also want to look at the below two bugs:

    https://bugzilla.redhat.com/show_bug.cgi?id=1382165 --
    virDomainGetBlockJobInfo: Adjust job reporting based on QEMU stats &
    the "ready" field of `query-block-jobs`

And (now fixed):

    https://bugzilla.redhat.com/show_bug.cgi?id=1372613 --  Improve live
    block device job status reporting via virDomainBlockJobInfo() 

And may want to go through this entire thread:

    https://www.redhat.com/archives/libvir-list/2016-October/msg00217.html
    -- RFC: Exposing "ready" bool (of `query-block-jobs`) or QMP
    BLOCK_JOB_READY event


[...]

-- 
/kashyap




More information about the libvirt-users mailing list