On 08/31/14 06:02, Eric Blake wrote: > To date, anyone performing a block copy and pivot ends up with > the destination being treated as <disk type='file'>. While this > works for data access for a block device, it has at least one > noticeable shortcoming: virDomainGetBlockInfo() reports allocation > differently for block devices visited as files (the size of the > device) than for block devices visited as <disk type='block'> > (the maximum sector used, as reported by qemu); and this difference > is significant when trying to manage qcow2 format on block devices > that can be grown as needed. > > Of course, the more powerful virDomainBlockCopy() API can already > express the ability to set the <disk> type. But a new API can't > be backported, while a new flag to an existing API can; and it is > also rather inconvenient to have to resort to the full power of > generating XML when just adding a flag to the older call will do > the trick. So this patch enhances blockcopy to let the user flag > when the resulting XML after the copy must list the device as > type='block'. > > * include/libvirt/libvirt.h.in (VIR_DOMAIN_BLOCK_REBASE_COPY_DEV): > New flag. > * src/libvirt.c (virDomainBlockRebase): Document it. > * tools/virsh-domain.c (opts_block_copy, blockJobImpl): Add > --blockdev option. > * tools/virsh.pod (blockcopy): Document it. > * src/qemu/qemu_driver.c (qemuDomainBlockRebase): Allow new flag. > (qemuDomainBlockCopy): Remember the flag, and make sure it is only > used on actual block devices. > * tests/qemuxml2argvdata/qemuxml2argv-disk-mirror.xml: Test it. > > Signed-off-by: Eric Blake <eblake@xxxxxxxxxx> > --- > include/libvirt/libvirt.h.in | 2 ++ > src/libvirt.c | 8 +++-- > src/qemu/qemu_driver.c | 36 ++++++++++++++-------- > .../qemuxml2argvdata/qemuxml2argv-disk-mirror.xml | 4 +-- > tools/virsh-domain.c | 6 ++++ > tools/virsh.pod | 7 +++-- > 6 files changed, 45 insertions(+), 18 deletions(-) > ACK Peter
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list