[libvirt] [PATCH] qemu: set default name for SPICE agent channel when generating command

Laine Stump laine at laine.org
Fri Mar 30 07:50:37 UTC 2012


commit b0e2bb33 set a default value for the SPICE agent channel by
inserting it during parsing of the channel XML. That method of setting
a default is problematic because it makes a format/parse roundtrip
unclean, and experience with setting other values as a side effect of
parsing has led to headaches (e.g. automatically setting a MAC address
in the parser when one isn't specified in the input XML).

This patch reverts commit b0e2bb33 and replaces it with the alternate
implementation of simply inserting the default value in the
appropriate place on the qemu commandline when no value is provided.
---

(Playing the devil's advocate on my own patch for a moment - one
advantage of Christophe's method of setting the default is that if we
use that object somewhere else in libvirt's code in the future, the
value will be set even if the XML left it unset, but with my method we
will have to check for a NULL name and replace it with the default
value anywhere we want to use it. So I won't say that either method is
definitely the proper way to go, but will just present this
alternative and see if someone else has an even stronger opinion than
me :-)

(BTW, I think I've decided while typing this message that, if we
decide to change from the original method of setting default to this
new method, the change should be pushed as two separate patches - one
reverting the original, and another adding the new. It's too close to
morning for me to take the time to do that right now, though.)

 src/conf/domain_conf.c  |    7 -------
 src/qemu/qemu_command.c |    6 +++---
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 24e10e6..ea558bb 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5248,13 +5248,6 @@ virDomainChrDefParseXML(virCapsPtr caps,
             goto error;
         } else {
             def->source.data.spicevmc = VIR_DOMAIN_CHR_SPICEVMC_VDAGENT;
-            if (!def->target.name) {
-                def->target.name = strdup("com.redhat.spice.0");
-                if (!def->target.name) {
-                    virReportOOMError();
-                    goto error;
-                }
-            }
         }
     }
 
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 3d2bb6b..50b1e6d 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3457,9 +3457,9 @@ qemuBuildVirtioSerialPortDevStr(virDomainChrDefPtr dev,
           qemuCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC))) {
         virBufferAsprintf(&buf, ",chardev=char%s,id=%s",
                           dev->info.alias, dev->info.alias);
-        if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
-            dev->target.name) {
-            virBufferAsprintf(&buf, ",name=%s", dev->target.name);
+        if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL) {
+            virBufferAsprintf(&buf, ",name=%s", dev->target.name
+                              ? dev->target.name : "com.redhat.spice.0");
         }
     } else {
         virBufferAsprintf(&buf, ",id=%s", dev->info.alias);
-- 
1.7.7.6




More information about the libvir-list mailing list