Hide Forgot
Description of problem: Blockcopy always fail when use options "granularity" Version-Release number of selected component (if applicable): libvirt-1.2.16-1.el7.x86_64 qemu-kvm-rhev-2.3.0-2.el7.x86_64 How reproducible: Always Steps to Reproduce: 1. Prepare a transient guest # virsh list --transient && virsh domblklist r7 Id Name State ---------------------------------------------------- 8 r7 running Target Source ------------------------------------------------ vda /var/lib/libvirt/images/r7.img 2. Do blockcopy with option "--granularity" # virsh blockcopy r7 vda /var/lib/libvirt/images/r7.s1 --granularity 4096 --verbose --wait Block Copy: [ 0 %] Now in mirroring phase 3. Check blockjob info and guest live xml # virsh blockjob r7 vda No current block job for vda # virsh dumpxml r7|grep mirror # ll -h /var/lib/libvirt/images/r7.s1 -rw-------. 1 qemu qemu 384K Jun 18 14:55 /var/lib/libvirt/images/r7.s1 4. Do blockcopy without option "--granularity" # virsh blockcopy r7 vda /var/lib/libvirt/images/r7.s1 --verbose --wait Block Copy: [100 %] Now in mirroring phase # virsh blockjob r7 vda Block Copy: [100 %] Actual results: Expected results: blockcopy should work well Additional info:
Invalid output in step 2 is fixed by: commit e7d3ff8464ed4833fa9c9bd9ef1f613f04434b31 Author: Peter Krempa <pkrempa> Date: Fri Jun 19 15:43:02 2015 +0200 virsh: blockcopy: Report error if the copy job fails When the block job would fail while watching it using the "--wait" option for blockcopy, virsh would rather unhelpfully report: $ virsh blockcopy vm hdc /tmp/raw.img --granularity 4096 --verbose --wait Now in mirroring phase Add a special case when the block job vanishes while waiting for it to finish to improve the message: $ virsh blockcopy vm hdc /tmp/raw.img --granularity 8192 --verbose --wait error: Block Copy unexpectedly failed
Verified with qemu-kvm-rhev-2.6.0-19.el7.x86_64 and libvirt-2.0.0-4.el7.x86_64, as driver-mirror with flag granularity works well under qemu, it passed under libvirt as well. # virsh blockcopy vm1-q35-pxb vda /tmp/copy --granularity 4096 --wait --verbose Block Copy: [100 %] Now in mirroring phase To trigger a failure by qemu, I tested with qemu-kvm-rhev-2.6.0-12.el7.x86_64 and libvirt-2.0.0-4.el7.x86_64 # virsh blockcopy vm1 vda /tmp/copy --granularity 4096 --wait --verbose Block Copy: [ 0 %] Copy failed Libvirt reports error when copy job fails.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2016-2577.html