diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 006e04effcdc858f00d8d8d06a99f9363154b76a..4ed354c907fa67956af6c4900551403d06570b05 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1948,7 +1948,7 @@ void virDomainShmemDefFree(virDomainShmemDefPtr def) return; virDomainDeviceInfoClear(&def->info); - VIR_FREE(def->server.path); + virDomainChrSourceDefClear(&def->server.chr); VIR_FREE(def->name); VIR_FREE(def); } @@ -11158,8 +11158,10 @@ virDomainShmemDefParseXML(xmlNodePtr node, if ((server = virXPathNode("./server[1]", ctxt))) { def->server.enabled = true; + def->server.chr.type = VIR_DOMAIN_CHR_TYPE_UNIX; + def->server.chr.data.nix.listen = false; if ((tmp = virXMLPropString(server, "path"))) - def->server.path = virFileSanitizePath(tmp); + def->server.chr.data.nix.path = virFileSanitizePath(tmp); VIR_FREE(tmp); } @@ -20195,7 +20197,7 @@ virDomainShmemDefFormat(virBufferPtr buf, if (def->server.enabled) { virBufferAddLit(buf, "server.path); + virBufferEscapeString(buf, " path='%s'", def->server.chr.data.nix.path); virBufferAddLit(buf, "/>\n"); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2bdbff1e140bf49a3c337640341b3675b078672e..12d945ea7f24a2f08b7bc7bf934d2afe7ea9dd67 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1601,7 +1601,7 @@ struct _virDomainShmemDef { unsigned long long size; struct { bool enabled; - char *path; + virDomainChrSourceDef chr; } server; struct { bool enabled; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a56ccb8e42105e9ab247eda223221a5fb0b788b6..287c51dc9116b1d817b6013eb9a01bc304f01634 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8593,24 +8593,14 @@ qemuBuildShmemBackendStr(virDomainShmemDefPtr shmem, virQEMUCapsPtr qemuCaps) { char *devstr = NULL; - virDomainChrSourceDef source = { - .type = VIR_DOMAIN_CHR_TYPE_UNIX, - .data.nix = { - .path = shmem->server.path, - .listen = false, - } - }; - if (!shmem->server.path && - virAsprintf(&source.data.nix.path, + if (!shmem->server.chr.data.nix.path && + virAsprintf(&shmem->server.chr.data.nix.path, "/var/lib/libvirt/shmem-%s-sock", shmem->name) < 0) return NULL; - devstr = qemuBuildChrChardevStr(&source, shmem->info.alias, qemuCaps); - - if (!shmem->server.path) - VIR_FREE(source.data.nix.path); + devstr = qemuBuildChrChardevStr(&shmem->server.chr, shmem->info.alias, qemuCaps); return devstr; }