This patch also adds support for addressing backing stores by index for this API. Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> --- Notes: - should probably be just squashed into the previous patch src/qemu/qemu_driver.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 4ed1123..5910ac9 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14865,6 +14865,8 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm, virObjectEventPtr event = NULL; int idx; virDomainDiskDefPtr disk; + virStorageSourcePtr baseSource = NULL; + unsigned int baseIndex = 0; if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", @@ -14926,12 +14928,17 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm, goto endjob; } + if (base && + (virStorageFileParseChainIndex(disk->dst, base, &baseIndex) < 0 || + !(baseSource = virStorageFileChainLookup(&disk->src, + disk->src.backingStore, + base, baseIndex, NULL)))) + goto endjob; + qemuDomainObjEnterMonitor(driver, vm); - /* XXX - libvirt should really be tracking the backing file chain - * itself, and validating that base is on the chain, rather than - * relying on qemu to do this. */ - ret = qemuMonitorBlockJob(priv->mon, device, base, bandwidth, info, mode, - async); + ret = qemuMonitorBlockJob(priv->mon, device, + baseIndex ? baseSource->path : base, + bandwidth, info, mode, async); qemuDomainObjExitMonitor(driver, vm); if (ret < 0) goto endjob; -- 1.9.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list