qemu_process: Hide qmperr inside qemuProcessQMP
Keep the pointer to QEMU stderr output in qemuProcessQMP struct instead of requiring the caller to provide it (and free it). Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
b459fde50b
commit
09d7daf380
@ -4376,14 +4376,13 @@ virQEMUCapsInitQMPSingle(virQEMUCapsPtr qemuCaps,
|
|||||||
const char *libDir,
|
const char *libDir,
|
||||||
uid_t runUid,
|
uid_t runUid,
|
||||||
gid_t runGid,
|
gid_t runGid,
|
||||||
char **qmperr,
|
|
||||||
bool onlyTCG)
|
bool onlyTCG)
|
||||||
{
|
{
|
||||||
qemuProcessQMPPtr proc = NULL;
|
qemuProcessQMPPtr proc = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (!(proc = qemuProcessQMPNew(qemuCaps->binary, libDir,
|
if (!(proc = qemuProcessQMPNew(qemuCaps->binary, libDir,
|
||||||
runUid, runGid, qmperr, onlyTCG)))
|
runUid, runGid, onlyTCG)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (qemuProcessQMPRun(proc) < 0)
|
if (qemuProcessQMPRun(proc) < 0)
|
||||||
@ -4408,10 +4407,9 @@ static int
|
|||||||
virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps,
|
virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps,
|
||||||
const char *libDir,
|
const char *libDir,
|
||||||
uid_t runUid,
|
uid_t runUid,
|
||||||
gid_t runGid,
|
gid_t runGid)
|
||||||
char **qmperr)
|
|
||||||
{
|
{
|
||||||
if (virQEMUCapsInitQMPSingle(qemuCaps, libDir, runUid, runGid, qmperr, false) < 0)
|
if (virQEMUCapsInitQMPSingle(qemuCaps, libDir, runUid, runGid, false) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -4420,7 +4418,7 @@ virQEMUCapsInitQMP(virQEMUCapsPtr qemuCaps,
|
|||||||
* off.
|
* off.
|
||||||
*/
|
*/
|
||||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM) &&
|
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM) &&
|
||||||
virQEMUCapsInitQMPSingle(qemuCaps, libDir, runUid, runGid, NULL, true) < 0)
|
virQEMUCapsInitQMPSingle(qemuCaps, libDir, runUid, runGid, true) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -4438,7 +4436,6 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
{
|
{
|
||||||
virQEMUCapsPtr qemuCaps;
|
virQEMUCapsPtr qemuCaps;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
char *qmperr = NULL;
|
|
||||||
|
|
||||||
if (!(qemuCaps = virQEMUCapsNew()))
|
if (!(qemuCaps = virQEMUCapsNew()))
|
||||||
goto error;
|
goto error;
|
||||||
@ -4465,7 +4462,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virQEMUCapsInitQMP(qemuCaps, libDir, runUid, runGid, &qmperr) < 0)
|
if (virQEMUCapsInitQMP(qemuCaps, libDir, runUid, runGid) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
qemuCaps->libvirtCtime = virGetSelfLastChanged();
|
qemuCaps->libvirtCtime = virGetSelfLastChanged();
|
||||||
@ -4484,7 +4481,6 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(qmperr);
|
|
||||||
return qemuCaps;
|
return qemuCaps;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -8335,6 +8335,7 @@ qemuProcessQMPFree(qemuProcessQMPPtr proc)
|
|||||||
VIR_FREE(proc->monpath);
|
VIR_FREE(proc->monpath);
|
||||||
VIR_FREE(proc->monarg);
|
VIR_FREE(proc->monarg);
|
||||||
VIR_FREE(proc->pidfile);
|
VIR_FREE(proc->pidfile);
|
||||||
|
VIR_FREE(proc->stderr);
|
||||||
VIR_FREE(proc);
|
VIR_FREE(proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8344,7 +8345,6 @@ qemuProcessQMPNew(const char *binary,
|
|||||||
const char *libDir,
|
const char *libDir,
|
||||||
uid_t runUid,
|
uid_t runUid,
|
||||||
gid_t runGid,
|
gid_t runGid,
|
||||||
char **qmperr,
|
|
||||||
bool forceTCG)
|
bool forceTCG)
|
||||||
{
|
{
|
||||||
qemuProcessQMPPtr proc = NULL;
|
qemuProcessQMPPtr proc = NULL;
|
||||||
@ -8357,7 +8357,6 @@ qemuProcessQMPNew(const char *binary,
|
|||||||
|
|
||||||
proc->runUid = runUid;
|
proc->runUid = runUid;
|
||||||
proc->runGid = runGid;
|
proc->runGid = runGid;
|
||||||
proc->qmperr = qmperr;
|
|
||||||
proc->forceTCG = forceTCG;
|
proc->forceTCG = forceTCG;
|
||||||
|
|
||||||
/* the ".sock" sufix is important to avoid a possible clash with a qemu
|
/* the ".sock" sufix is important to avoid a possible clash with a qemu
|
||||||
@ -8439,7 +8438,7 @@ qemuProcessQMPRun(qemuProcessQMPPtr proc)
|
|||||||
virCommandSetGID(proc->cmd, proc->runGid);
|
virCommandSetGID(proc->cmd, proc->runGid);
|
||||||
virCommandSetUID(proc->cmd, proc->runUid);
|
virCommandSetUID(proc->cmd, proc->runUid);
|
||||||
|
|
||||||
virCommandSetErrorBuffer(proc->cmd, proc->qmperr);
|
virCommandSetErrorBuffer(proc->cmd, &(proc->stderr));
|
||||||
|
|
||||||
if (virCommandRun(proc->cmd, &status) < 0)
|
if (virCommandRun(proc->cmd, &status) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -8449,7 +8448,7 @@ qemuProcessQMPRun(qemuProcessQMPPtr proc)
|
|||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Failed to start QEMU binary %s for probing: %s"),
|
_("Failed to start QEMU binary %s for probing: %s"),
|
||||||
proc->binary,
|
proc->binary,
|
||||||
*proc->qmperr ? *proc->qmperr : _("unknown error"));
|
proc->stderr ? proc->stderr : _("unknown error"));
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8513,8 +8512,6 @@ qemuProcessQMPStop(qemuProcessQMPPtr proc)
|
|||||||
(long long)proc->pid,
|
(long long)proc->pid,
|
||||||
virStrerror(errno, ebuf, sizeof(ebuf)));
|
virStrerror(errno, ebuf, sizeof(ebuf)));
|
||||||
|
|
||||||
VIR_FREE(*proc->qmperr);
|
|
||||||
|
|
||||||
proc->pid = 0;
|
proc->pid = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ struct _qemuProcessQMP {
|
|||||||
char *binary;
|
char *binary;
|
||||||
uid_t runUid;
|
uid_t runUid;
|
||||||
gid_t runGid;
|
gid_t runGid;
|
||||||
char **qmperr;
|
char *stderr;
|
||||||
char *monarg;
|
char *monarg;
|
||||||
char *monpath;
|
char *monpath;
|
||||||
char *pidfile;
|
char *pidfile;
|
||||||
@ -236,7 +236,6 @@ qemuProcessQMPPtr qemuProcessQMPNew(const char *binary,
|
|||||||
const char *libDir,
|
const char *libDir,
|
||||||
uid_t runUid,
|
uid_t runUid,
|
||||||
gid_t runGid,
|
gid_t runGid,
|
||||||
char **qmperr,
|
|
||||||
bool forceTCG);
|
bool forceTCG);
|
||||||
|
|
||||||
void qemuProcessQMPFree(qemuProcessQMPPtr proc);
|
void qemuProcessQMPFree(qemuProcessQMPPtr proc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user