]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: propagate iotune settings to all disks in the group
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Wed, 8 Jan 2020 06:49:29 +0000 (09:49 +0300)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 29 Jan 2020 10:46:47 +0000 (11:46 +0100)
Currently upon successfull call to qemu's implementation of
virDomainSetBlockIoTune iotune settings are changed only for the
disk given in API if the disk is in iotune group while we need
to change the settings for all disks in the group.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c

index 048855b533ccb75a8084b88ac39a3f1d0e7f312a..51bdc74e2d98f3527ef3d93d91b88bb0a4aca443 100644 (file)
@@ -19117,6 +19117,26 @@ qemuDomainSetBlockIoTuneDefaults(virDomainBlockIoTuneInfoPtr newinfo,
 }
 
 
+static void
+qemuDomainSetGroupBlockIoTune(virDomainDefPtr def,
+                              virDomainBlockIoTuneInfoPtr iotune)
+{
+    size_t i;
+
+    if (!iotune->group_name)
+        return;
+
+    for (i = 0; i < def->ndisks; i++) {
+        virDomainDiskDefPtr d = def->disks[i];
+
+        if (STREQ_NULLABLE(d->blkdeviotune.group_name, iotune->group_name)) {
+            VIR_FREE(d->blkdeviotune.group_name);
+            virDomainBlockIoTuneInfoCopy(iotune, &d->blkdeviotune);
+        }
+    }
+}
+
+
 static int
 qemuDomainSetBlockIoTune(virDomainPtr dom,
                          const char *path,
@@ -19419,6 +19439,8 @@ qemuDomainSetBlockIoTune(virDomainPtr dom,
         if (virDomainDiskSetBlockIOTune(disk, &info) < 0)
             goto endjob;
 
+        qemuDomainSetGroupBlockIoTune(def, &info);
+
         if (virDomainObjSave(vm, driver->xmlopt, cfg->stateDir) < 0)
             goto endjob;