
On Mon, Jun 23, 2014 at 09:39:08AM -0600, Eric Blake wrote:
On 06/21/2014 04:34 AM, Kashyap Chamarthy wrote:
I just tried to test this series built from Eric's libvirt git repo, and QEMU built from its git.
On a live (or offline guest) I see the below:
$ virsh blockcommit f20vm1 vda --shallow --wait \ --verbose --pivot --active error: unsupported flags (0x4) in function qemuDomainBlockCommit
I also tried:
$ virsh blockcommit --domain f20vm1 vda \ --base /home/kashyap/vmimages/snap3-f20vm1.qcow2 \ --top /home/kashyap/vmimages/snap4-f20vm1.qcow2 \ --wait --verbose --pivot --active error: unsupported flags (0x4) in function qemuDomainBlockCommit
Is that expected?
Unfortunately, yes, unless you have also applied Jeff's pending patches for qemu that actually enable optional 'top':
https://lists.gnu.org/archive/html/qemu-devel/2014-06/msg04060.html
Yep, I just applied the above patch to today's QEMU git and tested with same libvirt (from your repos.or.cz instance) commit ID that I pointed to in my earlier email in this thread, and active blockcommit w/ 'virsh' works for me. Following are details of a simple test I did. Before active blockcommit ------------------------- - I had a chain like that: [base] <-- [snap1] <-- [snap2] <-- [snap3] <-- [snap4] (current-active) - Current active block device in use: $ virsh domblklist f20vm1 Target Source ------------------------------------------------ vda /home/kashyap/vmimages/snap4.qcow2 Perform active blockcommit -------------------------- The below commmand will commit contents of [snap4] into [snap3] and makes [snap3] as the current active image invalidating [snap4]: $ virsh blockcommit f20vm1 vda --shallow --wait \ --verbose --pivot --active Block Commit: [100 %] Successfully pivoted After active blockcommit ------------------------ The chain has reduced to below (shortened by one image): [base] <-- [snap1] <-- [snap2] <-- [snap3] (current-active) Again, check what's the current active block device via 'virsh' (it should reflect 'snap3'): $ virsh domblklist f20vm1 Target Source ------------------------------------------------ vda /home/kashyap/vmimages/snap3.qcow2 Also, it updated the 'virsh dumpxml' output just fine. Lastly, I ran active blockcommit again (w/ --shallow), so the chain is now reduced to [base] <-- [snap1] <-- [snap2] (current-active) And, here's its associated 'virsh dumpxml' output showing the uppdated backing store (chain reduced by two): $ virsh dumpxml f20vm1 | grep "snap2.qcow2" -A10 -B2 <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/home/kashyap/vmimages/snap2.qcow2'/> <backingStore type='file' index='1'> <format type='qcow2'/> <source file='/home/kashyap/vmimages/snap1.qcow2'/> <backingStore type='file' index='2'> <format type='qcow2'/> <source file='/home/kashyap/vmimages/f20vm1.qcow2'/> <backingStore/> </backingStore> </backingStore> <target dev='vda' bus='virtio'/> So, works as described in the patch titled "blockcommit: turn on active commit" (on libvir-list). Will test more once patches are committed to git.
You're very bleeding edge; I won't push my patches to libvirt.git until qemu.git also has matching patches, so in the meantime, you have to carry patches on both repos. Peter has been doing some rpm builds of the bits and pieces for integration testing, but I'm not sure if he is planning on publishing them for public consumption yet.
No worries, I can test manually apply patches ('git am -3') from the list to test. -- /kashyap