]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: handle reconnect on chardev hotplug
authorZhiPeng Lu <lu.zhipeng@zte.com.cn>
Wed, 13 Sep 2017 00:33:40 +0000 (08:33 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 20 Sep 2017 09:09:00 +0000 (11:09 +0200)
The patch passes the reconnect timeout to QEMU by monitor on
chardev hotplug.

Signed-off-by: ZhiPeng Lu <lu.zhipeng@zte.com.cn>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_monitor_json.c

index 0fc5d21222abefc30fb43647755b56aaa2d03a7c..63b855920be3f4afc93d3e3cafbed76038f29777 100644 (file)
@@ -6441,6 +6441,16 @@ int qemuMonitorJSONGetTPMTypes(qemuMonitorPtr mon,
     return qemuMonitorJSONGetStringArray(mon, "query-tpm-types", tpmtypes);
 }
 
+static int
+qemuMonitorJSONBuildChrChardevReconnect(virJSONValuePtr object,
+                                        const virDomainChrSourceReconnectDef *def)
+{
+    if (def->enabled != VIR_TRISTATE_BOOL_YES)
+        return 0;
+
+    return virJSONValueObjectAppendNumberUint(object, "reconnect", def->timeout);
+}
+
 static virJSONValuePtr
 qemuMonitorJSONAttachCharDevCommand(const char *chrID,
                                     const virDomainChrSourceDef *chr)
@@ -6505,6 +6515,9 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID,
             if (virJSONValueObjectAppendString(data, "tls-creds", tlsalias) < 0)
                 goto cleanup;
         }
+
+        if (qemuMonitorJSONBuildChrChardevReconnect(data, &chr->data.tcp.reconnect) < 0)
+            goto cleanup;
         break;
 
     case VIR_DOMAIN_CHR_TYPE_UDP:
@@ -6542,6 +6555,9 @@ qemuMonitorJSONAttachCharDevCommand(const char *chrID,
         if (virJSONValueObjectAppendBoolean(data, "wait", false) < 0 ||
             virJSONValueObjectAppendBoolean(data, "server", chr->data.nix.listen) < 0)
             goto cleanup;
+
+        if (qemuMonitorJSONBuildChrChardevReconnect(data, &chr->data.nix.reconnect) < 0)
+            goto cleanup;
         break;
 
     case VIR_DOMAIN_CHR_TYPE_SPICEVMC: