Nodename may be asociated to a disk backup job, add support to looking
up in that chain too. This is specifically useful for the
BLOCK_WRITE_THRESHOLD event which can be registered for any nodename.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
virStorageSourcePtr
qemuDomainGetStorageSourceByDevstr(const char *devstr,
- virDomainDefPtr def)
+ virDomainDefPtr def,
+ virDomainBackupDefPtr backupdef)
{
virDomainDiskDefPtr disk = NULL;
virStorageSourcePtr n;
}
}
+ if (backupdef) {
+ size_t i;
+
+ for (i = 0; i < backupdef->ndisks; i++) {
+ virDomainBackupDiskDefPtr backupdisk = backupdef->disks + i;
+
+ if (STRNEQ(target, backupdisk->name))
+ continue;
+
+ for (n = backupdisk->store; virStorageSourceIsBacking(n); n = n->backingStore) {
+ if (n->id == idx)
+ return n;
+ }
+ }
+ }
+
virReportError(VIR_ERR_INVALID_ARG,
_("failed to find disk '%s'"), devstr);
return NULL;
unsigned int idx);
virStorageSourcePtr qemuDomainGetStorageSourceByDevstr(const char *devstr,
- virDomainDefPtr def);
+ virDomainDefPtr def,
+ virDomainBackupDefPtr backupdef);
int
qemuDomainUpdateCPU(virDomainObjPtr vm,
goto endjob;
}
- if (!(src = qemuDomainGetStorageSourceByDevstr(dev, vm->def)))
+ if (!(src = qemuDomainGetStorageSourceByDevstr(dev, vm->def, priv->backup)))
goto endjob;
if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV) &&