]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: command: move qemuBuildChrChardevStr caps validation to qemu_domain
authorDaniel Henrique Barboza <danielhb413@gmail.com>
Mon, 9 Dec 2019 23:15:17 +0000 (20:15 -0300)
committerCole Robinson <crobinso@redhat.com>
Mon, 16 Dec 2019 22:50:46 +0000 (17:50 -0500)
Move QEMU caps validation of QEMU_CAPS_CHARDEV_FILE_APPEND and
QEMU_CAPS_CHARDEV_LOGFILE to qemuDomainChrSourceDefValidate().

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
src/qemu/qemu_command.c
src/qemu/qemu_domain.c

index 74e4111f8cb1fd132830869876e35e43b141836a..98cc05480f00fe669bf115c4550c08d4568a69a1 100644 (file)
@@ -5141,12 +5141,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
     case VIR_DOMAIN_CHR_TYPE_FILE:
         virBufferAsprintf(&buf, "file,id=%s", charAlias);
 
-        if (dev->data.file.append != VIR_TRISTATE_SWITCH_ABSENT &&
-            !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FILE_APPEND)) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                           _("append not supported in this QEMU binary"));
-            return NULL;
-        }
         if (qemuBuildChrChardevFileStr(flags & QEMU_BUILD_CHARDEV_FILE_LOGD ?
                                        logManager : NULL,
                                        cmd, def, &buf,
@@ -5282,11 +5276,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
     }
 
     if (dev->logfile) {
-        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_LOGFILE)) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                           _("logfile not supported in this QEMU binary"));
-            return NULL;
-        }
         if (qemuBuildChrChardevFileStr(logManager, cmd, def, &buf,
                                        "logfile", dev->logfile,
                                        "logappend", dev->logappend) < 0)
index 5bd5502c366355f4d1d600855504e4615a830f9d..8ba724841d860e128162578ca6864455d631a369 100644 (file)
@@ -5592,7 +5592,8 @@ qemuDomainChrSourceReconnectDefValidate(const virDomainChrSourceReconnectDef *de
 
 
 static int
-qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def)
+qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def,
+                               virQEMUCapsPtr qemuCaps)
 {
     switch ((virDomainChrType)def->type) {
     case VIR_DOMAIN_CHR_TYPE_TCP:
@@ -5605,11 +5606,19 @@ qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def)
             return -1;
         break;
 
+    case VIR_DOMAIN_CHR_TYPE_FILE:
+        if (def->data.file.append != VIR_TRISTATE_SWITCH_ABSENT &&
+            !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_FILE_APPEND)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("append not supported in this QEMU binary"));
+            return -1;
+        }
+        break;
+
     case VIR_DOMAIN_CHR_TYPE_NULL:
     case VIR_DOMAIN_CHR_TYPE_VC:
     case VIR_DOMAIN_CHR_TYPE_PTY:
     case VIR_DOMAIN_CHR_TYPE_DEV:
-    case VIR_DOMAIN_CHR_TYPE_FILE:
     case VIR_DOMAIN_CHR_TYPE_PIPE:
     case VIR_DOMAIN_CHR_TYPE_STDIO:
     case VIR_DOMAIN_CHR_TYPE_UDP:
@@ -5620,6 +5629,14 @@ qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def)
         break;
     }
 
+    if (def->logfile) {
+        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_LOGFILE)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("logfile not supported in this QEMU binary"));
+            return -1;
+        }
+    }
+
     return 0;
 }
 
@@ -5759,9 +5776,10 @@ qemuDomainChrTargetDefValidate(const virDomainChrDef *chr)
 
 static int
 qemuDomainChrDefValidate(const virDomainChrDef *dev,
-                         const virDomainDef *def)
+                         const virDomainDef *def,
+                         virQEMUCapsPtr qemuCaps)
 {
-    if (qemuDomainChrSourceDefValidate(dev->source) < 0)
+    if (qemuDomainChrSourceDefValidate(dev->source, qemuCaps) < 0)
         return -1;
 
     if (qemuDomainChrTargetDefValidate(dev) < 0)
@@ -5817,10 +5835,11 @@ qemuDomainChrDefValidate(const virDomainChrDef *dev,
 
 
 static int
-qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def)
+qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def,
+                               virQEMUCapsPtr qemuCaps)
 {
     if (def->type == VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH &&
-        qemuDomainChrSourceDefValidate(def->data.passthru) < 0)
+        qemuDomainChrSourceDefValidate(def->data.passthru, qemuCaps) < 0)
         return -1;
 
     return 0;
@@ -5832,7 +5851,7 @@ qemuDomainRNGDefValidate(const virDomainRNGDef *def,
                          virQEMUCapsPtr qemuCaps G_GNUC_UNUSED)
 {
     if (def->backend == VIR_DOMAIN_RNG_BACKEND_EGD &&
-        qemuDomainChrSourceDefValidate(def->source.chardev) < 0)
+        qemuDomainChrSourceDefValidate(def->source.chardev, qemuCaps) < 0)
         return -1;
 
     return 0;
@@ -5840,9 +5859,10 @@ qemuDomainRNGDefValidate(const virDomainRNGDef *def,
 
 
 static int
-qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def)
+qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def,
+                              virQEMUCapsPtr qemuCaps)
 {
-    if (qemuDomainChrSourceDefValidate(def->source) < 0)
+    if (qemuDomainChrSourceDefValidate(def->source, qemuCaps) < 0)
         return -1;
 
     return 0;
@@ -7762,11 +7782,11 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
         break;
 
     case VIR_DOMAIN_DEVICE_CHR:
-        ret = qemuDomainChrDefValidate(dev->data.chr, def);
+        ret = qemuDomainChrDefValidate(dev->data.chr, def, qemuCaps);
         break;
 
     case VIR_DOMAIN_DEVICE_SMARTCARD:
-        ret = qemuDomainSmartcardDefValidate(dev->data.smartcard);
+        ret = qemuDomainSmartcardDefValidate(dev->data.smartcard, qemuCaps);
         break;
 
     case VIR_DOMAIN_DEVICE_RNG:
@@ -7774,7 +7794,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
         break;
 
     case VIR_DOMAIN_DEVICE_REDIRDEV:
-        ret = qemuDomainRedirdevDefValidate(dev->data.redirdev);
+        ret = qemuDomainRedirdevDefValidate(dev->data.redirdev, qemuCaps);
         break;
 
     case VIR_DOMAIN_DEVICE_WATCHDOG: