mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
qemu: hotplug: Setup disk throttling with blockdev
With blockdev we must issue the block_set_io_throttle QMP command to setup disk throttling as we currently can't do it with the 'throttle' layer. Unfortunately there's nothing we can do if it fails. https://bugzilla.redhat.com/show_bug.cgi?id=1733163 Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
f2ac23f245
commit
3fbaf0587c
@ -617,6 +617,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver);
|
||||
VIR_AUTOPTR(virJSONValue) corProps = NULL;
|
||||
VIR_AUTOFREE(char *) corAlias = NULL;
|
||||
bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
|
||||
|
||||
if (qemuDomainStorageSourceChainAccessAllow(driver, vm, disk->src) < 0)
|
||||
goto cleanup;
|
||||
@ -627,7 +628,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
|
||||
goto error;
|
||||
|
||||
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV)) {
|
||||
if (blockdev) {
|
||||
if (disk->copy_on_read == VIR_TRISTATE_SWITCH_ON &&
|
||||
!(corProps = qemuBlockStorageGetCopyOnReadProps(disk)))
|
||||
goto cleanup;
|
||||
@ -667,6 +668,21 @@ qemuDomainAttachDiskGeneric(virQEMUDriverPtr driver,
|
||||
goto exit_monitor;
|
||||
}
|
||||
|
||||
/* Setup throttling of disk via block_set_io_throttle QMP command. This
|
||||
* is a hack until the 'throttle' blockdev driver will support modification
|
||||
* of the trhottle group. See also qemuProcessSetupDiskThrottlingBlockdev.
|
||||
* As there isn't anything sane to do if this fails, let's just return
|
||||
* success.
|
||||
*/
|
||||
if (blockdev &&
|
||||
qemuDiskConfigBlkdeviotuneEnabled(disk)) {
|
||||
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
|
||||
if (qemuMonitorSetBlockIoThrottle(priv->mon, NULL, diskPriv->qomName,
|
||||
&disk->blkdeviotune,
|
||||
true, true, true) < 0)
|
||||
VIR_WARN("failed to set blkdeviotune for '%s' of '%s'", disk->dst, vm->def->name);
|
||||
}
|
||||
|
||||
if (qemuDomainObjExitMonitor(driver, vm) < 0) {
|
||||
ret = -2;
|
||||
goto error;
|
||||
|
@ -6671,6 +6671,7 @@ qemuProcessGenID(virDomainObjPtr vm,
|
||||
* Sets up disk trottling for -blockdev via block_set_io_throttle monitor
|
||||
* command. This hack should be replaced by proper use of the 'throttle'
|
||||
* blockdev driver in qemu once it will support changing of the throttle group.
|
||||
* Same hack is done in qemuDomainAttachDiskGeneric.
|
||||
*/
|
||||
static int
|
||||
qemuProcessSetupDiskThrottlingBlockdev(virQEMUDriverPtr driver,
|
||||
|
Loading…
x
Reference in New Issue
Block a user