mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06: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
|
virStorageSourcePtr
|
||||||
qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
||||||
virDomainDefPtr def)
|
virDomainDefPtr def,
|
||||||
|
virDomainBackupDefPtr backupdef)
|
||||||
{
|
{
|
||||||
virDomainDiskDefPtr disk = NULL;
|
virDomainDiskDefPtr disk = NULL;
|
||||||
virStorageSourcePtr n;
|
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,
|
virReportError(VIR_ERR_INVALID_ARG,
|
||||||
_("failed to find disk '%s'"), devstr);
|
_("failed to find disk '%s'"), devstr);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -920,7 +920,8 @@ char *qemuDomainDiskBackingStoreGetName(virDomainDiskDefPtr disk,
|
|||||||
unsigned int idx);
|
unsigned int idx);
|
||||||
|
|
||||||
virStorageSourcePtr qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
virStorageSourcePtr qemuDomainGetStorageSourceByDevstr(const char *devstr,
|
||||||
virDomainDefPtr def);
|
virDomainDefPtr def,
|
||||||
|
virDomainBackupDefPtr backupdef);
|
||||||
|
|
||||||
int
|
int
|
||||||
qemuDomainUpdateCPU(virDomainObjPtr vm,
|
qemuDomainUpdateCPU(virDomainObjPtr vm,
|
||||||
|
@ -19585,7 +19585,7 @@ qemuDomainSetBlockThreshold(virDomainPtr dom,
|
|||||||
goto endjob;
|
goto endjob;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(src = qemuDomainGetStorageSourceByDevstr(dev, vm->def)))
|
if (!(src = qemuDomainGetStorageSourceByDevstr(dev, vm->def, priv->backup)))
|
||||||
goto endjob;
|
goto endjob;
|
||||||
|
|
||||||
if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV) &&
|
if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user