return 0;
}
+
+
+void
+qemuProcessEventFree(struct qemuProcessEvent *event)
+{
+ if (!event)
+ return;
+
+ switch (event->eventType) {
+ case QEMU_PROCESS_EVENT_GUESTPANIC:
+ qemuMonitorEventPanicInfoFree(event->data);
+ break;
+ case QEMU_PROCESS_EVENT_WATCHDOG:
+ case QEMU_PROCESS_EVENT_DEVICE_DELETED:
+ case QEMU_PROCESS_EVENT_NIC_RX_FILTER_CHANGED:
+ case QEMU_PROCESS_EVENT_SERIAL_CHANGED:
+ case QEMU_PROCESS_EVENT_BLOCK_JOB:
+ case QEMU_PROCESS_EVENT_MONITOR_EOF:
+ VIR_FREE(event->data);
+ break;
+ case QEMU_PROCESS_EVENT_LAST:
+ break;
+ }
+ VIR_FREE(event);
+}
void *data;
};
+void qemuProcessEventFree(struct qemuProcessEvent *event);
+
typedef struct _qemuDomainLogContext qemuDomainLogContext;
typedef qemuDomainLogContext *qemuDomainLogContextPtr;
qemuDomainObjEndAsyncJob(driver, vm);
cleanup:
- VIR_FREE(dumpfile);
virObjectUnref(cfg);
+ VIR_FREE(dumpfile);
}
static int
qemuDomainRemoveInactiveJob(driver, vm);
cleanup:
- qemuMonitorEventPanicInfoFree(info);
virObjectUnref(cfg);
}
static void
processDeviceDeletedEvent(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- char *devAlias)
+ const char *devAlias)
{
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
virDomainDeviceDef dev;
qemuDomainObjEndJob(driver, vm);
cleanup:
- VIR_FREE(devAlias);
virObjectUnref(cfg);
}
static void
processNicRxFilterChangedEvent(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- char *devAlias)
+ const char *devAlias)
{
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
qemuDomainObjPrivatePtr priv = vm->privateData;
cleanup:
virNetDevRxFilterFree(hostFilter);
virNetDevRxFilterFree(guestFilter);
- VIR_FREE(devAlias);
virObjectUnref(cfg);
}
static void
processSerialChangedEvent(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- char *devAlias,
+ const char *devAlias,
bool connected)
{
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
qemuDomainObjEndJob(driver, vm);
cleanup:
- VIR_FREE(devAlias);
virObjectUnref(cfg);
-
}
static void
processBlockJobEvent(virQEMUDriverPtr driver,
virDomainObjPtr vm,
- char *diskAlias,
+ const char *diskAlias,
int type,
int status)
{
virDomainDiskDefPtr disk;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
- goto cleanup;
+ return;
if (!virDomainObjIsActive(vm)) {
VIR_DEBUG("Domain is not running");
endjob:
qemuDomainObjEndJob(driver, vm);
- cleanup:
- VIR_FREE(diskAlias);
}
}
virDomainObjEndAPI(&vm);
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
}
if (virThreadPoolSendJob(driver->workerPool, 0, processEvent) < 0) {
ignore_value(virObjectUnref(vm));
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
goto cleanup;
}
if (virThreadPoolSendJob(driver->workerPool, 0, processEvent) < 0) {
if (!virObjectUnref(vm))
vm = NULL;
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
}
}
}
virObjectUnlock(vm);
return 0;
error:
- if (processEvent)
- VIR_FREE(processEvent->data);
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
goto cleanup;
}
if (virThreadPoolSendJob(driver->workerPool, 0, processEvent) < 0) {
if (!virObjectUnref(vm))
vm = NULL;
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
}
cleanup:
virObjectUnlock(vm);
return 0;
error:
- if (processEvent)
- VIR_FREE(processEvent->data);
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
goto cleanup;
}
virObjectUnlock(vm);
return 0;
error:
- if (processEvent)
- VIR_FREE(processEvent->data);
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
goto cleanup;
}
virObjectUnlock(vm);
return 0;
error:
- if (processEvent)
- VIR_FREE(processEvent->data);
- VIR_FREE(processEvent);
+ qemuProcessEventFree(processEvent);
goto cleanup;
}