c8c376
From cc05f5db0c1051dc3e1ded20410fce4560b19ea3 Mon Sep 17 00:00:00 2001
c8c376
Message-Id: <cc05f5db0c1051dc3e1ded20410fce4560b19ea3@dist-git>
c8c376
From: Michal Privoznik <mprivozn@redhat.com>
c8c376
Date: Tue, 8 Nov 2016 13:42:09 +0100
c8c376
Subject: [PATCH] qemuBuildChrChardevStr: Introduce @nowait argument
c8c376
c8c376
RHEL-7.3: https://bugzilla.redhat.com/show_bug.cgi?id=1366108
c8c376
RHEL-7.3.z: https://bugzilla.redhat.com/show_bug.cgi?id=1392032
c8c376
c8c376
This alone makes not much sense. But the aim is to reuse this
c8c376
function in qemuBuildVhostuserCommandLine() where 'nowait' is not
c8c376
supported for vhost-user devices.
c8c376
c8c376
Conflict: Because e3d3c04a is not backported.
c8c376
c8c376
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
c8c376
(cherry picked from commit 336d4a71feb1cd68df13e1812e86971c61553522)
c8c376
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
c8c376
---
c8c376
 src/qemu/qemu_command.c | 36 ++++++++++++++++++++----------------
c8c376
 1 file changed, 20 insertions(+), 16 deletions(-)
c8c376
c8c376
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
c8c376
index d88ee5b6b..d28a367cc 100644
c8c376
--- a/src/qemu/qemu_command.c
c8c376
+++ b/src/qemu/qemu_command.c
c8c376
@@ -4891,7 +4891,8 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
c8c376
                        const virDomainDef *def,
c8c376
                        const virDomainChrSourceDef *dev,
c8c376
                        const char *alias,
c8c376
-                       virQEMUCapsPtr qemuCaps)
c8c376
+                       virQEMUCapsPtr qemuCaps,
c8c376
+                       bool nowait)
c8c376
 {
c8c376
     virBuffer buf = VIR_BUFFER_INITIALIZER;
c8c376
     bool telnet;
c8c376
@@ -4964,19 +4965,22 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
c8c376
     case VIR_DOMAIN_CHR_TYPE_TCP:
c8c376
         telnet = dev->data.tcp.protocol == VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET;
c8c376
         virBufferAsprintf(&buf,
c8c376
-                          "socket,id=char%s,host=%s,port=%s%s%s",
c8c376
+                          "socket,id=char%s,host=%s,port=%s%s",
c8c376
                           alias,
c8c376
                           dev->data.tcp.host,
c8c376
                           dev->data.tcp.service,
c8c376
-                          telnet ? ",telnet" : "",
c8c376
-                          dev->data.tcp.listen ? ",server,nowait" : "");
c8c376
+                          telnet ? ",telnet" : "");
c8c376
+
c8c376
+        if (dev->data.tcp.listen)
c8c376
+            virBufferAdd(&buf, nowait ? ",server,nowait" : ",server", -1);
c8c376
+
c8c376
         break;
c8c376
 
c8c376
     case VIR_DOMAIN_CHR_TYPE_UNIX:
c8c376
         virBufferAsprintf(&buf, "socket,id=char%s,path=", alias);
c8c376
         virQEMUBuildBufferEscapeComma(&buf, dev->data.nix.path);
c8c376
         if (dev->data.nix.listen)
c8c376
-            virBufferAddLit(&buf, ",server,nowait");
c8c376
+            virBufferAdd(&buf, nowait ? ",server,nowait" : ",server", -1);
c8c376
         break;
c8c376
 
c8c376
     case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
c8c376
@@ -5300,7 +5304,7 @@ qemuBuildMonitorCommandLine(virLogManagerPtr logManager,
c8c376
 
c8c376
         if (!(chrdev = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                               monitor_chr, "monitor",
c8c376
-                                              qemuCaps)))
c8c376
+                                              qemuCaps, true)))
c8c376
             return -1;
c8c376
         virCommandAddArg(cmd, "-chardev");
c8c376
         virCommandAddArg(cmd, chrdev);
c8c376
@@ -5460,7 +5464,7 @@ qemuBuildRNGBackendChrdevStr(virLogManagerPtr logManager,
c8c376
     case VIR_DOMAIN_RNG_BACKEND_EGD:
c8c376
         if (!(*chr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                             rng->source.chardev,
c8c376
-                                            rng->info.alias, qemuCaps)))
c8c376
+                                            rng->info.alias, qemuCaps, true)))
c8c376
             return -1;
c8c376
     }
c8c376
 
c8c376
@@ -8461,7 +8465,7 @@ qemuBuildSmartcardCommandLine(virLogManagerPtr logManager,
c8c376
         if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                               &smartcard->data.passthru,
c8c376
                                               smartcard->info.alias,
c8c376
-                                              qemuCaps))) {
c8c376
+                                              qemuCaps, true))) {
c8c376
             virBufferFreeAndReset(&opt;;
c8c376
             return -1;
c8c376
         }
c8c376
@@ -8594,7 +8598,7 @@ qemuBuildShmemBackendChrStr(virLogManagerPtr logManager,
c8c376
 
c8c376
     devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                     &shmem->server.chr,
c8c376
-                                    shmem->info.alias, qemuCaps);
c8c376
+                                    shmem->info.alias, qemuCaps, true);
c8c376
 
c8c376
     return devstr;
c8c376
 }
c8c376
@@ -8764,7 +8768,7 @@ qemuBuildSerialCommandLine(virLogManagerPtr logManager,
c8c376
             if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                                   &serial->source,
c8c376
                                                   serial->info.alias,
c8c376
-                                                  qemuCaps)))
c8c376
+                                                  qemuCaps, true)))
c8c376
                 return -1;
c8c376
             virCommandAddArg(cmd, "-chardev");
c8c376
             virCommandAddArg(cmd, devstr);
c8c376
@@ -8803,7 +8807,7 @@ qemuBuildParallelsCommandLine(virLogManagerPtr logManager,
c8c376
             if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                                   &parallel->source,
c8c376
                                                   parallel->info.alias,
c8c376
-                                                  qemuCaps)))
c8c376
+                                                  qemuCaps, true)))
c8c376
                 return -1;
c8c376
             virCommandAddArg(cmd, "-chardev");
c8c376
             virCommandAddArg(cmd, devstr);
c8c376
@@ -8849,7 +8853,7 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logManager,
c8c376
             if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                                   &channel->source,
c8c376
                                                   channel->info.alias,
c8c376
-                                                  qemuCaps)))
c8c376
+                                                  qemuCaps, true)))
c8c376
                 return -1;
c8c376
             virCommandAddArg(cmd, "-chardev");
c8c376
             virCommandAddArg(cmd, devstr);
c8c376
@@ -8872,7 +8876,7 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logManager,
c8c376
                 if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                                       &channel->source,
c8c376
                                                       channel->info.alias,
c8c376
-                                                      qemuCaps)))
c8c376
+                                                      qemuCaps, true)))
c8c376
                     return -1;
c8c376
                 virCommandAddArg(cmd, "-chardev");
c8c376
                 virCommandAddArg(cmd, devstr);
c8c376
@@ -8915,7 +8919,7 @@ qemuBuildConsoleCommandLine(virLogManagerPtr logManager,
c8c376
             if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                                   &console->source,
c8c376
                                                   console->info.alias,
c8c376
-                                                  qemuCaps)))
c8c376
+                                                  qemuCaps, true)))
c8c376
                 return -1;
c8c376
             virCommandAddArg(cmd, "-chardev");
c8c376
             virCommandAddArg(cmd, devstr);
c8c376
@@ -8929,7 +8933,7 @@ qemuBuildConsoleCommandLine(virLogManagerPtr logManager,
c8c376
             if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                                   &console->source,
c8c376
                                                   console->info.alias,
c8c376
-                                                  qemuCaps)))
c8c376
+                                                  qemuCaps, true)))
c8c376
                 return -1;
c8c376
             virCommandAddArg(cmd, "-chardev");
c8c376
             virCommandAddArg(cmd, devstr);
c8c376
@@ -9058,7 +9062,7 @@ qemuBuildRedirdevCommandLine(virLogManagerPtr logManager,
c8c376
         if (!(devstr = qemuBuildChrChardevStr(logManager, cmd, cfg, def,
c8c376
                                               &redirdev->source.chr,
c8c376
                                               redirdev->info.alias,
c8c376
-                                              qemuCaps))) {
c8c376
+                                              qemuCaps, true))) {
c8c376
             return -1;
c8c376
         }
c8c376
 
c8c376
-- 
c8c376
2.11.0
c8c376