]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Move channel path generation out of command creation
authorMartin Kletzander <mkletzan@redhat.com>
Wed, 30 Mar 2016 14:34:17 +0000 (16:34 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Thu, 9 Jun 2016 11:23:15 +0000 (13:23 +0200)
Put it into separate function called qemuDomainPrepareChannel() and call
it from the new qemuProcessPrepareDomain().

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_command.h
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h
src/qemu/qemu_process.c

index b5d84e6bfb7bdc067f5c8b251985732a8e12b9ea..1eb34cf68f383edd708ffc67a14a3c9f19310530 100644 (file)
@@ -8379,8 +8379,7 @@ static int
 qemuBuildChannelsCommandLine(virLogManagerPtr logManager,
                              virCommandPtr cmd,
                              const virDomainDef *def,
-                             virQEMUCapsPtr qemuCaps,
-                             const char *domainChannelTargetDir)
+                             virQEMUCapsPtr qemuCaps)
 {
     size_t i;
 
@@ -8412,22 +8411,6 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logManager,
             break;
 
         case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO:
-            /*
-             * TODO: Refactor so that we generate this (and onther
-             * things) somewhere else then where we are building the
-             * command line.
-             */
-            if (channel->source.type == VIR_DOMAIN_CHR_TYPE_UNIX &&
-                !channel->source.data.nix.path) {
-                if (virAsprintf(&channel->source.data.nix.path,
-                                "%s/%s", domainChannelTargetDir,
-                                channel->target.name ? channel->target.name
-                                : "unknown.sock") < 0)
-                    return -1;
-
-                channel->source.data.nix.listen = true;
-            }
-
             if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC) &&
                 channel->source.type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) {
                 /* spicevmc was originally introduced via a -device
@@ -9091,8 +9074,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
                      virBitmapPtr nodeset,
                      size_t *nnicindexes,
                      int **nicindexes,
-                     const char *domainLibDir,
-                     const char *domainChannelTargetDir)
+                     const char *domainLibDir)
 {
     size_t i;
     char uuid[VIR_UUID_STRING_BUFLEN];
@@ -9237,8 +9219,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
     if (qemuBuildParallelsCommandLine(logManager, cmd, def, qemuCaps) < 0)
         goto error;
 
-    if (qemuBuildChannelsCommandLine(logManager, cmd, def, qemuCaps,
-                                     domainChannelTargetDir) < 0)
+    if (qemuBuildChannelsCommandLine(logManager, cmd, def, qemuCaps) < 0)
         goto error;
 
     if (qemuBuildConsoleCommandLine(logManager, cmd, def, qemuCaps) < 0)
index d2b7fa731bd580b4aaa3ef12cdf0c523622454f3..f0ffe21de589bc95f038b95ff5d9fed092a6a912 100644 (file)
@@ -58,9 +58,8 @@ virCommandPtr qemuBuildCommandLine(virQEMUDriverPtr driver,
                                    virBitmapPtr nodeset,
                                    size_t *nnicindexes,
                                    int **nicindexes,
-                                   const char *domainLibDir,
-                                   const char *domainChannelTargetDir)
-    ATTRIBUTE_NONNULL(15) ATTRIBUTE_NONNULL(16);
+                                   const char *domainLibDir)
+    ATTRIBUTE_NONNULL(15);
 
 /* Generate '-device' string for chardev device */
 int
index 0a1c09a7a512a5187b57c71fa5285f023dbd45f3..1f2d22fb5f1e1b42c4cf7435bb87e94e5ed5a983 100644 (file)
@@ -5545,3 +5545,23 @@ qemuDomainDefValidateDiskLunSource(const virStorageSource *src)
 
     return 0;
 }
+
+
+int
+qemuDomainPrepareChannel(virDomainChrDefPtr channel,
+                         const char *domainChannelTargetDir)
+{
+    if (channel->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO &&
+        channel->source.type == VIR_DOMAIN_CHR_TYPE_UNIX &&
+        !channel->source.data.nix.path) {
+        if (virAsprintf(&channel->source.data.nix.path,
+                        "%s/%s", domainChannelTargetDir,
+                        channel->target.name ? channel->target.name
+                        : "unknown.sock") < 0)
+            return -1;
+
+        channel->source.data.nix.listen = true;
+    }
+
+    return 0;
+}
index 25381b1310180dd0d8beae0cdab94938edab759f..2443e97d81aacc69b5be5f5f67eb48d6896ab6f6 100644 (file)
@@ -686,4 +686,8 @@ int qemuDomainSecretPrepare(virConnectPtr conn, virDomainObjPtr vm)
 int qemuDomainDefValidateDiskLunSource(const virStorageSource *src)
     ATTRIBUTE_NONNULL(1);
 
+int qemuDomainPrepareChannel(virDomainChrDefPtr chr,
+                             const char *domainChannelTargetDir)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+
 #endif /* __QEMU_DOMAIN_H__ */
index 397dac7eefe7977bcbfc1f76e6b4fd1b2c80d5be..8c13b013114bb3f303294cfdb5bd3b2bb9947aa9 100644 (file)
@@ -4885,6 +4885,12 @@ qemuProcessPrepareDomain(virConnectPtr conn,
     if (qemuDomainSecretPrepare(conn, vm) < 0)
         goto cleanup;
 
+    for (i = 0; i < vm->def->nchannels; i++) {
+        if (qemuDomainPrepareChannel(vm->def->channels[i],
+                                     priv->channelTargetDir) < 0)
+            goto cleanup;
+    }
+
     if (VIR_ALLOC(priv->monConfig) < 0)
         goto cleanup;
 
@@ -5100,8 +5106,7 @@ qemuProcessLaunch(virConnectPtr conn,
                                      qemuCheckFips(),
                                      priv->autoNodeset,
                                      &nnicindexes, &nicindexes,
-                                     priv->libDir,
-                                     priv->channelTargetDir)))
+                                     priv->libDir)))
         goto cleanup;
 
     if (incoming && incoming->fd != -1)
@@ -5520,8 +5525,7 @@ qemuProcessCreatePretendCmd(virConnectPtr conn,
                                priv->autoNodeset,
                                NULL,
                                NULL,
-                               priv->libDir,
-                               priv->channelTargetDir);
+                               priv->libDir);
 
  cleanup:
     return cmd;