mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
conf: Convert 'chr' in virDomainShmemDef to proper pointer
The main reason is to ensure that the private data are properly allocated for every instance. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
876f19c19e
commit
3c558f56f8
@ -898,7 +898,7 @@ virDomainAuditShmem(virDomainObj *vm,
|
|||||||
{
|
{
|
||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
char *vmname = virAuditEncode("vm", vm->def->name);
|
char *vmname = virAuditEncode("vm", vm->def->name);
|
||||||
const char *srcpath = virDomainChrSourceDefGetPath(&def->server.chr);
|
const char *srcpath = virDomainChrSourceDefGetPath(def->server.chr);
|
||||||
const char *virt = virDomainAuditGetVirtType(vm->def);
|
const char *virt = virDomainAuditGetVirtType(vm->def);
|
||||||
char *shmpath = NULL;
|
char *shmpath = NULL;
|
||||||
|
|
||||||
|
@ -3069,7 +3069,7 @@ void virDomainShmemDefFree(virDomainShmemDef *def)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
virDomainDeviceInfoClear(&def->info);
|
virDomainDeviceInfoClear(&def->info);
|
||||||
virDomainChrSourceDefClear(&def->server.chr);
|
virObjectUnref(def->server.chr);
|
||||||
g_free(def->name);
|
g_free(def->name);
|
||||||
g_free(def);
|
g_free(def);
|
||||||
}
|
}
|
||||||
@ -13665,11 +13665,14 @@ virDomainShmemDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
if ((server = virXPathNode("./server[1]", ctxt))) {
|
if ((server = virXPathNode("./server[1]", ctxt))) {
|
||||||
g_autofree char *tmp = NULL;
|
g_autofree char *tmp = NULL;
|
||||||
|
|
||||||
|
if (!(def->server.chr = virDomainChrSourceDefNew(xmlopt)))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
def->server.enabled = true;
|
def->server.enabled = true;
|
||||||
def->server.chr.type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
def->server.chr->type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
||||||
def->server.chr.data.nix.listen = false;
|
def->server.chr->data.nix.listen = false;
|
||||||
if ((tmp = virXMLPropString(server, "path")))
|
if ((tmp = virXMLPropString(server, "path")))
|
||||||
def->server.chr.data.nix.path = virFileSanitizePath(tmp);
|
def->server.chr->data.nix.path = virFileSanitizePath(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((msi = virXPathNode("./msi[1]", ctxt))) {
|
if ((msi = virXPathNode("./msi[1]", ctxt))) {
|
||||||
@ -16814,8 +16817,8 @@ virDomainShmemDefEquals(virDomainShmemDef *src,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (src->server.enabled) {
|
if (src->server.enabled) {
|
||||||
if (STRNEQ_NULLABLE(src->server.chr.data.nix.path,
|
if (STRNEQ_NULLABLE(src->server.chr->data.nix.path,
|
||||||
dst->server.chr.data.nix.path))
|
dst->server.chr->data.nix.path))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25868,7 +25871,7 @@ virDomainShmemDefFormat(virBuffer *buf,
|
|||||||
|
|
||||||
if (def->server.enabled) {
|
if (def->server.enabled) {
|
||||||
virBufferAddLit(buf, "<server");
|
virBufferAddLit(buf, "<server");
|
||||||
virBufferEscapeString(buf, " path='%s'", def->server.chr.data.nix.path);
|
virBufferEscapeString(buf, " path='%s'", def->server.chr->data.nix.path);
|
||||||
virBufferAddLit(buf, "/>\n");
|
virBufferAddLit(buf, "/>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1997,7 +1997,7 @@ struct _virDomainShmemDef {
|
|||||||
virDomainShmemRole role;
|
virDomainShmemRole role;
|
||||||
struct {
|
struct {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
virDomainChrSourceDef chr;
|
virDomainChrSourceDef *chr;
|
||||||
} server;
|
} server;
|
||||||
struct {
|
struct {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
|
@ -9368,7 +9368,7 @@ qemuBuildShmemCommandLine(virLogManager *logManager,
|
|||||||
if (shmem->server.enabled) {
|
if (shmem->server.enabled) {
|
||||||
chardev = qemuBuildChrChardevStr(logManager, secManager,
|
chardev = qemuBuildChrChardevStr(logManager, secManager,
|
||||||
cmd, cfg, def,
|
cmd, cfg, def,
|
||||||
&shmem->server.chr,
|
shmem->server.chr,
|
||||||
shmem->info.alias, qemuCaps,
|
shmem->info.alias, qemuCaps,
|
||||||
cdevflags);
|
cdevflags);
|
||||||
if (!chardev)
|
if (!chardev)
|
||||||
|
@ -9964,11 +9964,11 @@ void
|
|||||||
qemuDomainPrepareShmemChardev(virDomainShmemDef *shmem)
|
qemuDomainPrepareShmemChardev(virDomainShmemDef *shmem)
|
||||||
{
|
{
|
||||||
if (!shmem->server.enabled ||
|
if (!shmem->server.enabled ||
|
||||||
shmem->server.chr.data.nix.path)
|
shmem->server.chr->data.nix.path)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
shmem->server.chr.data.nix.path = g_strdup_printf("/var/lib/libvirt/shmem-%s-sock",
|
shmem->server.chr->data.nix.path = g_strdup_printf("/var/lib/libvirt/shmem-%s-sock",
|
||||||
shmem->name);
|
shmem->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3064,7 +3064,7 @@ qemuDomainAttachShmemDevice(virQEMUDriver *driver,
|
|||||||
qemuDomainObjEnterMonitor(driver, vm);
|
qemuDomainObjEnterMonitor(driver, vm);
|
||||||
|
|
||||||
if (shmem->server.enabled) {
|
if (shmem->server.enabled) {
|
||||||
if (qemuHotplugChardevAttach(priv->mon, charAlias, &shmem->server.chr) < 0)
|
if (qemuHotplugChardevAttach(priv->mon, charAlias, shmem->server.chr) < 0)
|
||||||
goto exit_monitor;
|
goto exit_monitor;
|
||||||
} else {
|
} else {
|
||||||
if (qemuMonitorAddObject(priv->mon, &props, &memAlias) < 0)
|
if (qemuMonitorAddObject(priv->mon, &props, &memAlias) < 0)
|
||||||
|
@ -1172,8 +1172,8 @@ get_files(vahControl * ctl)
|
|||||||
* When the server path is enabled, use it - otherwise fallback to
|
* When the server path is enabled, use it - otherwise fallback to
|
||||||
* model dependent defaults. */
|
* model dependent defaults. */
|
||||||
if (shmem->server.enabled &&
|
if (shmem->server.enabled &&
|
||||||
shmem->server.chr.data.nix.path) {
|
shmem->server.chr->data.nix.path) {
|
||||||
if (vah_add_file(&buf, shmem->server.chr.data.nix.path,
|
if (vah_add_file(&buf, shmem->server.chr->data.nix.path,
|
||||||
"rw") != 0)
|
"rw") != 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user