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