mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
qemuDomainGetStorageSourceByDevstr: Lookup also backup 'store' nodenames
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>
This commit is contained in:
parent
c1720b9ac7
commit
40242b7452
@ -9959,7 +9959,8 @@ qemuDomainDiskBackingStoreGetName(virDomainDiskDefPtr disk,
|
||||
|
||||
virStorageSourcePtr
|
||||
qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
||||
virDomainDefPtr def)
|
||||
virDomainDefPtr def,
|
||||
virDomainBackupDefPtr backupdef)
|
||||
{
|
||||
virDomainDiskDefPtr disk = NULL;
|
||||
virStorageSourcePtr n;
|
||||
@ -9993,6 +9994,22 @@ qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -920,7 +920,8 @@ char *qemuDomainDiskBackingStoreGetName(virDomainDiskDefPtr disk,
|
||||
unsigned int idx);
|
||||
|
||||
virStorageSourcePtr qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
||||
virDomainDefPtr def);
|
||||
virDomainDefPtr def,
|
||||
virDomainBackupDefPtr backupdef);
|
||||
|
||||
int
|
||||
qemuDomainUpdateCPU(virDomainObjPtr vm,
|
||||
|
@ -19585,7 +19585,7 @@ qemuDomainSetBlockThreshold(virDomainPtr dom,
|
||||
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) &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user