QEMU's block-stream command supports pulling ("streaming" in QMP lingo)
into
arbitrary layer, however libvirt can only pull into an active layer. This
series is a proof-of-concept work to extend libvirt's pull to support pulling
into non-active layers as well.
While this doesn't seem to be a much demanded feature by itself, it can be seen
as a prerequisite to implementing full support for external snapshots in
snapshot-delete(*) as that appears to be implementable in terms of a
full-featured pull.
As stated above, this is a proof-of-concept work so admittedly not much effort
went into fully polishing the series. The expectation is that the series will
have to change heavily anyway before it's good enough to be pushed.
(*)
https://bugzilla.redhat.com/show_bug.cgi?id=1519001
Pavel Mores (6):
qemu: block: add 'top' parameter to qemuDomainBlockPullCommon()
qemu: block: pull job extended with 'top' parameter
qemu: block: blockpull param 'top' support in virsh proper
qemu: block: blockpull param 'top' support in driver and RPC
qemu: block: 'top' support in construction of QMP block-stream
qemu: block: extend pull job completion with 'top' handling
include/libvirt/libvirt-domain.h | 4 ++--
src/driver-hypervisor.h | 1 +
src/libvirt-domain.c | 7 ++++---
src/qemu/qemu_blockjob.c | 35 ++++++++++++++++++++++++++++----
src/qemu/qemu_blockjob.h | 2 ++
src/qemu/qemu_driver.c | 33 +++++++++++++++++++++++-------
src/remote/remote_protocol.x | 1 +
src/remote_protocol-structs | 1 +
tools/virsh-domain.c | 14 ++++++++++---
9 files changed, 79 insertions(+), 19 deletions(-)
--
2.24.1