mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: change qemuDomainTaint APIs to accept qemuDomainLogContextPtr
The qemuDomainTaint APIs currently expect to be passed a log file descriptor. Change them to instead use a qemuDomainLogContextPtr to hide the implementation details. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
@@ -2128,9 +2128,10 @@ qemuDomainDefFormatLive(virQEMUDriverPtr driver,
|
|||||||
void qemuDomainObjTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainTaintFlags taint,
|
virDomainTaintFlags taint,
|
||||||
int logFD)
|
qemuDomainLogContextPtr logCtxt)
|
||||||
{
|
{
|
||||||
virErrorPtr orig_err = NULL;
|
virErrorPtr orig_err = NULL;
|
||||||
|
bool closeLog = false;
|
||||||
|
|
||||||
if (virDomainObjTaint(obj, taint)) {
|
if (virDomainObjTaint(obj, taint)) {
|
||||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||||
@@ -2146,11 +2147,27 @@ void qemuDomainObjTaint(virQEMUDriverPtr driver,
|
|||||||
* preserve original error, and clear any error that
|
* preserve original error, and clear any error that
|
||||||
* is raised */
|
* is raised */
|
||||||
orig_err = virSaveLastError();
|
orig_err = virSaveLastError();
|
||||||
if (qemuDomainAppendLog(driver, obj, logFD,
|
if (logCtxt == NULL) {
|
||||||
"Domain id=%d is tainted: %s\n",
|
logCtxt = qemuDomainLogContextNew(driver, obj,
|
||||||
obj->def->id,
|
QEMU_DOMAIN_LOG_CONTEXT_MODE_ATTACH);
|
||||||
virDomainTaintTypeToString(taint)) < 0)
|
if (!logCtxt) {
|
||||||
|
if (orig_err) {
|
||||||
|
virSetError(orig_err);
|
||||||
|
virFreeError(orig_err);
|
||||||
|
}
|
||||||
|
VIR_WARN("Unable to open domainlog");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
closeLog = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qemuDomainLogContextWrite(logCtxt,
|
||||||
|
"Domain id=%d is tainted: %s\n",
|
||||||
|
obj->def->id,
|
||||||
|
virDomainTaintTypeToString(taint)) < 0)
|
||||||
virResetLastError();
|
virResetLastError();
|
||||||
|
if (closeLog)
|
||||||
|
qemuDomainLogContextFree(logCtxt);
|
||||||
if (orig_err) {
|
if (orig_err) {
|
||||||
virSetError(orig_err);
|
virSetError(orig_err);
|
||||||
virFreeError(orig_err);
|
virFreeError(orig_err);
|
||||||
@@ -2161,7 +2178,7 @@ void qemuDomainObjTaint(virQEMUDriverPtr driver,
|
|||||||
|
|
||||||
void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
int logFD)
|
qemuDomainLogContextPtr logCtxt)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
@@ -2171,32 +2188,32 @@ void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
|
|||||||
(!cfg->clearEmulatorCapabilities ||
|
(!cfg->clearEmulatorCapabilities ||
|
||||||
cfg->user == 0 ||
|
cfg->user == 0 ||
|
||||||
cfg->group == 0))
|
cfg->group == 0))
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES, logCtxt);
|
||||||
|
|
||||||
if (priv->hookRun)
|
if (priv->hookRun)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HOOK, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HOOK, logCtxt);
|
||||||
|
|
||||||
if (obj->def->namespaceData) {
|
if (obj->def->namespaceData) {
|
||||||
qemuDomainCmdlineDefPtr qemucmd = obj->def->namespaceData;
|
qemuDomainCmdlineDefPtr qemucmd = obj->def->namespaceData;
|
||||||
if (qemucmd->num_args || qemucmd->num_env)
|
if (qemucmd->num_args || qemucmd->num_env)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CUSTOM_ARGV, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CUSTOM_ARGV, logCtxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj->def->cpu && obj->def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH)
|
if (obj->def->cpu && obj->def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HOST_CPU, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HOST_CPU, logCtxt);
|
||||||
|
|
||||||
for (i = 0; i < obj->def->ndisks; i++)
|
for (i = 0; i < obj->def->ndisks; i++)
|
||||||
qemuDomainObjCheckDiskTaint(driver, obj, obj->def->disks[i], logFD);
|
qemuDomainObjCheckDiskTaint(driver, obj, obj->def->disks[i], logCtxt);
|
||||||
|
|
||||||
for (i = 0; i < obj->def->nhostdevs; i++)
|
for (i = 0; i < obj->def->nhostdevs; i++)
|
||||||
qemuDomainObjCheckHostdevTaint(driver, obj, obj->def->hostdevs[i],
|
qemuDomainObjCheckHostdevTaint(driver, obj, obj->def->hostdevs[i],
|
||||||
logFD);
|
logCtxt);
|
||||||
|
|
||||||
for (i = 0; i < obj->def->nnets; i++)
|
for (i = 0; i < obj->def->nnets; i++)
|
||||||
qemuDomainObjCheckNetTaint(driver, obj, obj->def->nets[i], logFD);
|
qemuDomainObjCheckNetTaint(driver, obj, obj->def->nets[i], logCtxt);
|
||||||
|
|
||||||
if (obj->def->os.dtb)
|
if (obj->def->os.dtb)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CUSTOM_DTB, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CUSTOM_DTB, logCtxt);
|
||||||
|
|
||||||
virObjectUnref(cfg);
|
virObjectUnref(cfg);
|
||||||
}
|
}
|
||||||
@@ -2205,24 +2222,24 @@ void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
|
|||||||
void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainDiskDefPtr disk,
|
virDomainDiskDefPtr disk,
|
||||||
int logFD)
|
qemuDomainLogContextPtr logCtxt)
|
||||||
{
|
{
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
int format = virDomainDiskGetFormat(disk);
|
int format = virDomainDiskGetFormat(disk);
|
||||||
|
|
||||||
if ((!format || format == VIR_STORAGE_FILE_AUTO) &&
|
if ((!format || format == VIR_STORAGE_FILE_AUTO) &&
|
||||||
cfg->allowDiskFormatProbing)
|
cfg->allowDiskFormatProbing)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_DISK_PROBING, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_DISK_PROBING, logCtxt);
|
||||||
|
|
||||||
if (disk->rawio == VIR_TRISTATE_BOOL_YES)
|
if (disk->rawio == VIR_TRISTATE_BOOL_YES)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES,
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES,
|
||||||
logFD);
|
logCtxt);
|
||||||
|
|
||||||
if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM &&
|
if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM &&
|
||||||
virStorageSourceGetActualType(disk->src) == VIR_STORAGE_TYPE_BLOCK &&
|
virStorageSourceGetActualType(disk->src) == VIR_STORAGE_TYPE_BLOCK &&
|
||||||
disk->src->path)
|
disk->src->path)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CDROM_PASSTHROUGH,
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_CDROM_PASSTHROUGH,
|
||||||
logFD);
|
logCtxt);
|
||||||
|
|
||||||
virObjectUnref(cfg);
|
virObjectUnref(cfg);
|
||||||
}
|
}
|
||||||
@@ -2231,21 +2248,21 @@ void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
|
|||||||
void qemuDomainObjCheckHostdevTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckHostdevTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainHostdevDefPtr hostdev,
|
virDomainHostdevDefPtr hostdev,
|
||||||
int logFD)
|
qemuDomainLogContextPtr logCtxt)
|
||||||
{
|
{
|
||||||
virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
|
virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
|
||||||
|
|
||||||
if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI &&
|
if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI &&
|
||||||
scsisrc->rawio == VIR_TRISTATE_BOOL_YES)
|
scsisrc->rawio == VIR_TRISTATE_BOOL_YES)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES,
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES,
|
||||||
logFD);
|
logCtxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void qemuDomainObjCheckNetTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckNetTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainNetDefPtr net,
|
virDomainNetDefPtr net,
|
||||||
int logFD)
|
qemuDomainLogContextPtr logCtxt)
|
||||||
{
|
{
|
||||||
/* script is only useful for NET_TYPE_ETHERNET (qemu) and
|
/* script is only useful for NET_TYPE_ETHERNET (qemu) and
|
||||||
* NET_TYPE_BRIDGE (xen), but could be (incorrectly) specified for
|
* NET_TYPE_BRIDGE (xen), but could be (incorrectly) specified for
|
||||||
@@ -2253,7 +2270,7 @@ void qemuDomainObjCheckNetTaint(virQEMUDriverPtr driver,
|
|||||||
* the soup, so it should taint the domain.
|
* the soup, so it should taint the domain.
|
||||||
*/
|
*/
|
||||||
if (net->script != NULL)
|
if (net->script != NULL)
|
||||||
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_SHELL_SCRIPTS, logFD);
|
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_SHELL_SCRIPTS, logCtxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2434,45 +2451,6 @@ void qemuDomainLogContextFree(qemuDomainLogContextPtr ctxt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int qemuDomainAppendLog(virQEMUDriverPtr driver,
|
|
||||||
virDomainObjPtr obj,
|
|
||||||
int logFD,
|
|
||||||
const char *fmt, ...)
|
|
||||||
{
|
|
||||||
va_list argptr;
|
|
||||||
char *message = NULL;
|
|
||||||
int ret = -1;
|
|
||||||
qemuDomainLogContextPtr logCtxt = NULL;
|
|
||||||
|
|
||||||
va_start(argptr, fmt);
|
|
||||||
|
|
||||||
if (logFD == -1) {
|
|
||||||
logCtxt = qemuDomainLogContextNew(driver, obj,
|
|
||||||
QEMU_DOMAIN_LOG_CONTEXT_MODE_ATTACH);
|
|
||||||
if (!logCtxt)
|
|
||||||
goto cleanup;
|
|
||||||
logFD = qemuDomainLogContextGetWriteFD(logCtxt);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virVasprintf(&message, fmt, argptr) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
if (safewrite(logFD, message, strlen(message)) < 0) {
|
|
||||||
virReportSystemError(errno, _("Unable to write to domain logfile %s"),
|
|
||||||
obj->def->name);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
va_end(argptr);
|
|
||||||
|
|
||||||
qemuDomainLogContextFree(logCtxt);
|
|
||||||
|
|
||||||
VIR_FREE(message);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Locate an appropriate 'qemu-img' binary. */
|
/* Locate an appropriate 'qemu-img' binary. */
|
||||||
const char *
|
const char *
|
||||||
qemuFindQemuImgBinary(virQEMUDriverPtr driver)
|
qemuFindQemuImgBinary(virQEMUDriverPtr driver)
|
||||||
|
|||||||
@@ -334,23 +334,23 @@ char *qemuDomainDefFormatLive(virQEMUDriverPtr driver,
|
|||||||
void qemuDomainObjTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainTaintFlags taint,
|
virDomainTaintFlags taint,
|
||||||
int logFD);
|
qemuDomainLogContextPtr logCtxt);
|
||||||
|
|
||||||
void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
int logFD);
|
qemuDomainLogContextPtr logCtxt);
|
||||||
void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainDiskDefPtr disk,
|
virDomainDiskDefPtr disk,
|
||||||
int logFD);
|
qemuDomainLogContextPtr logCtxt);
|
||||||
void qemuDomainObjCheckHostdevTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckHostdevTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainHostdevDefPtr disk,
|
virDomainHostdevDefPtr disk,
|
||||||
int logFD);
|
qemuDomainLogContextPtr logCtxt);
|
||||||
void qemuDomainObjCheckNetTaint(virQEMUDriverPtr driver,
|
void qemuDomainObjCheckNetTaint(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr obj,
|
virDomainObjPtr obj,
|
||||||
virDomainNetDefPtr net,
|
virDomainNetDefPtr net,
|
||||||
int logFD);
|
qemuDomainLogContextPtr logCtxt);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
QEMU_DOMAIN_LOG_CONTEXT_MODE_START,
|
QEMU_DOMAIN_LOG_CONTEXT_MODE_START,
|
||||||
@@ -372,11 +372,6 @@ off_t qemuDomainLogContextGetPosition(qemuDomainLogContextPtr ctxt);
|
|||||||
void qemuDomainLogContextRef(qemuDomainLogContextPtr ctxt);
|
void qemuDomainLogContextRef(qemuDomainLogContextPtr ctxt);
|
||||||
void qemuDomainLogContextFree(qemuDomainLogContextPtr ctxt);
|
void qemuDomainLogContextFree(qemuDomainLogContextPtr ctxt);
|
||||||
|
|
||||||
int qemuDomainAppendLog(virQEMUDriverPtr driver,
|
|
||||||
virDomainObjPtr vm,
|
|
||||||
int logFD,
|
|
||||||
const char *fmt, ...) ATTRIBUTE_FMT_PRINTF(4, 5);
|
|
||||||
|
|
||||||
const char *qemuFindQemuImgBinary(virQEMUDriverPtr driver);
|
const char *qemuFindQemuImgBinary(virQEMUDriverPtr driver);
|
||||||
|
|
||||||
int qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
|
int qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm,
|
||||||
|
|||||||
@@ -7706,7 +7706,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
|
|||||||
|
|
||||||
switch ((virDomainDeviceType) dev->type) {
|
switch ((virDomainDeviceType) dev->type) {
|
||||||
case VIR_DOMAIN_DEVICE_DISK:
|
case VIR_DOMAIN_DEVICE_DISK:
|
||||||
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, -1);
|
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, NULL);
|
||||||
ret = qemuDomainAttachDeviceDiskLive(dom->conn, driver, vm, dev);
|
ret = qemuDomainAttachDeviceDiskLive(dom->conn, driver, vm, dev);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
alias = dev->data.disk->info.alias;
|
alias = dev->data.disk->info.alias;
|
||||||
@@ -7730,7 +7730,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_DEVICE_NET:
|
case VIR_DOMAIN_DEVICE_NET:
|
||||||
qemuDomainObjCheckNetTaint(driver, vm, dev->data.net, -1);
|
qemuDomainObjCheckNetTaint(driver, vm, dev->data.net, NULL);
|
||||||
ret = qemuDomainAttachNetDevice(dom->conn, driver, vm,
|
ret = qemuDomainAttachNetDevice(dom->conn, driver, vm,
|
||||||
dev->data.net);
|
dev->data.net);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
@@ -7740,7 +7740,7 @@ qemuDomainAttachDeviceLive(virDomainObjPtr vm,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_DEVICE_HOSTDEV:
|
case VIR_DOMAIN_DEVICE_HOSTDEV:
|
||||||
qemuDomainObjCheckHostdevTaint(driver, vm, dev->data.hostdev, -1);
|
qemuDomainObjCheckHostdevTaint(driver, vm, dev->data.hostdev, NULL);
|
||||||
ret = qemuDomainAttachHostDevice(dom->conn, driver, vm,
|
ret = qemuDomainAttachHostDevice(dom->conn, driver, vm,
|
||||||
dev->data.hostdev);
|
dev->data.hostdev);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
@@ -7988,7 +7988,7 @@ qemuDomainUpdateDeviceLive(virConnectPtr conn,
|
|||||||
|
|
||||||
switch ((virDomainDeviceType) dev->type) {
|
switch ((virDomainDeviceType) dev->type) {
|
||||||
case VIR_DOMAIN_DEVICE_DISK:
|
case VIR_DOMAIN_DEVICE_DISK:
|
||||||
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, -1);
|
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, NULL);
|
||||||
ret = qemuDomainChangeDiskLive(conn, vm, dev, driver, force);
|
ret = qemuDomainChangeDiskLive(conn, vm, dev, driver, force);
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_DEVICE_GRAPHICS:
|
case VIR_DOMAIN_DEVICE_GRAPHICS:
|
||||||
@@ -15823,7 +15823,7 @@ static int qemuDomainQemuMonitorCommand(virDomainPtr domain, const char *cmd,
|
|||||||
|
|
||||||
priv = vm->privateData;
|
priv = vm->privateData;
|
||||||
|
|
||||||
qemuDomainObjTaint(driver, vm, VIR_DOMAIN_TAINT_CUSTOM_MONITOR, -1);
|
qemuDomainObjTaint(driver, vm, VIR_DOMAIN_TAINT_CUSTOM_MONITOR, NULL);
|
||||||
|
|
||||||
hmp = !!(flags & VIR_DOMAIN_QEMU_MONITOR_COMMAND_HMP);
|
hmp = !!(flags & VIR_DOMAIN_QEMU_MONITOR_COMMAND_HMP);
|
||||||
|
|
||||||
|
|||||||
@@ -4780,7 +4780,7 @@ qemuProcessLaunch(virConnectPtr conn,
|
|||||||
|
|
||||||
qemuLogOperation(vm, "starting up", logfile, cmd);
|
qemuLogOperation(vm, "starting up", logfile, cmd);
|
||||||
|
|
||||||
qemuDomainObjCheckTaint(driver, vm, logfile);
|
qemuDomainObjCheckTaint(driver, vm, logCtxt);
|
||||||
|
|
||||||
qemuDomainLogContextMarkPosition(logCtxt);
|
qemuDomainLogContextMarkPosition(logCtxt);
|
||||||
|
|
||||||
@@ -5633,7 +5633,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||||||
}
|
}
|
||||||
VIR_FREE(timestamp);
|
VIR_FREE(timestamp);
|
||||||
|
|
||||||
qemuDomainObjTaint(driver, vm, VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH, logfile);
|
qemuDomainObjTaint(driver, vm, VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH, logCtxt);
|
||||||
|
|
||||||
VIR_DEBUG("Waiting for monitor to show up");
|
VIR_DEBUG("Waiting for monitor to show up");
|
||||||
if (qemuProcessWaitForMonitor(driver, vm, QEMU_ASYNC_JOB_NONE, priv->qemuCaps, NULL) < 0)
|
if (qemuProcessWaitForMonitor(driver, vm, QEMU_ASYNC_JOB_NONE, priv->qemuCaps, NULL) < 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user