]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Adjust maxparams logic for qemuDomainGetBlockIoTune
authorJohn Ferlan <jferlan@redhat.com>
Mon, 7 Nov 2016 13:43:01 +0000 (08:43 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Mon, 5 Dec 2016 23:12:08 +0000 (18:12 -0500)
Rather than using negative logic and setting the maxparams to a lesser
value based on which capabilities exist, alter the logic to modify the
maxparams based on a base value plus the found capabilities. Reduces the
chance that some backported feature produces an incorrect value.

src/qemu/qemu_driver.c

index 3517aa2be2dc4608330e22a88ecc6be7a7badff5..23157c5abaf5487e2b7be39dbf13f2fbce6ab7e0 100644 (file)
@@ -112,9 +112,12 @@ VIR_LOG_INIT("qemu.qemu_driver");
 
 #define QEMU_NB_MEM_PARAM  3
 
-#define QEMU_NB_BLOCK_IO_TUNE_PARAM  6
-#define QEMU_NB_BLOCK_IO_TUNE_PARAM_MAX  13
-#define QEMU_NB_BLOCK_IO_TUNE_PARAM_MAX_LENGTH 19
+#define QEMU_NB_BLOCK_IO_TUNE_BASE_PARAMS 6
+#define QEMU_NB_BLOCK_IO_TUNE_MAX_PARAMS 7
+#define QEMU_NB_BLOCK_IO_TUNE_LENGTH_PARAMS 6
+#define QEMU_NB_BLOCK_IO_TUNE_ALL_PARAMS (QEMU_NB_BLOCK_IO_TUNE_BASE_PARAMS + \
+                                          QEMU_NB_BLOCK_IO_TUNE_MAX_PARAMS + \
+                                          QEMU_NB_BLOCK_IO_TUNE_LENGTH_PARAMS)
 
 #define QEMU_NB_NUMA_PARAM 2
 
@@ -17718,7 +17721,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
     virDomainBlockIoTuneInfo reply;
     char *device = NULL;
     int ret = -1;
-    int maxparams = QEMU_NB_BLOCK_IO_TUNE_PARAM_MAX_LENGTH;
+    int maxparams;
 
     virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
                   VIR_DOMAIN_AFFECT_CONFIG |
@@ -17752,11 +17755,13 @@ qemuDomainGetBlockIoTune(virDomainPtr dom,
             goto endjob;
         }
 
-        if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE_MAX))
-            maxparams = QEMU_NB_BLOCK_IO_TUNE_PARAM;
-        else if (!virQEMUCapsGet(priv->qemuCaps,
-                                 QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH))
-            maxparams = QEMU_NB_BLOCK_IO_TUNE_PARAM_MAX;
+        maxparams = QEMU_NB_BLOCK_IO_TUNE_BASE_PARAMS;
+        if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE_MAX))
+            maxparams += QEMU_NB_BLOCK_IO_TUNE_MAX_PARAMS;
+        if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH))
+            maxparams += QEMU_NB_BLOCK_IO_TUNE_LENGTH_PARAMS;
+    } else {
+        maxparams = QEMU_NB_BLOCK_IO_TUNE_ALL_PARAMS;
     }
 
     if (*nparams == 0) {