On Sun, Dec 02, 2018 at 23:10:15 -0600, Chris Venteicher wrote: > Multiple QEMU processes for QMP commands can operate concurrently. > > Use a unique directory under libDir for each QEMU processes > to avoid pidfile and unix socket collision between processes. > > The pid file name is changed from "capabilities.pidfile" to "qmp.pid" > because we no longer need to avoid a possible clash with a qemu domain > called "capabilities" now that the processes artifacts are stored in > their own unique temporary directories. > > "Capabilities" was changed to "qmp" in the pid file name because these > processes are no longer specific to the capabilities usecase and are > more generic in terms of being used for any general purpose QMP message > exchanges with a QEMU process that is not associated with a domain. > > Signed-off-by: Chris Venteicher <cventeic@xxxxxxxxxx> > --- > src/qemu/qemu_process.c | 24 ++++++++++++++---------- > src/qemu/qemu_process.h | 1 + > 2 files changed, 15 insertions(+), 10 deletions(-) > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > index 80b938cc0b..26ba59143d 100644 > --- a/src/qemu/qemu_process.c > +++ b/src/qemu/qemu_process.c > @@ -8119,6 +8119,7 @@ qemuProcessQmpFree(qemuProcessQmpPtr proc) > > VIR_FREE(proc->binary); > VIR_FREE(proc->libDir); > + VIR_FREE(proc->uniqDir); > VIR_FREE(proc->monpath); > VIR_FREE(proc->monarg); > VIR_FREE(proc->pidfile); > @@ -8181,33 +8182,33 @@ qemuProcessQmpNew(const char *binary, > static int > qemuProcessQmpInit(qemuProcessQmpPtr proc) > { > + char *template = NULL; > int ret = -1; > > VIR_DEBUG("Beginning VM startup process" > " proc=%p, emulator=%s", > proc, proc->binary); > > - /* the ".sock" sufix is important to avoid a possible clash with a qemu > - * domain called "capabilities" > - */ > - if (virAsprintf(&proc->monpath, "%s/%s", proc->libDir, > - "capabilities.monitor.sock") < 0) > + if (virAsprintf(&template, "%s/qemu.XXXXXX", proc->libDir) < 0) Directories for domains are called "domain-%s" so maybe we could call directories for QMP processes as "qmp-%s" rather than "qemu.%s". > + goto cleanup; > + > + proc->uniqDir = mkdtemp(template); mkdtemp returns NULL on error and you need to handle it here. > + > + if (virAsprintf(&proc->monpath, "%s/%s", proc->uniqDir, > + "qmp.monitor") < 0) > goto cleanup; ... Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list