mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: Do not use opaque pointer in QEMU monitor callbacks
It always points to QEMU driver, which is quite redundant as all callbacks also get a pointer to a vm object. Let's get the driver pointer from there instead. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
64d5d06c56
commit
88f3727e71
@ -305,9 +305,8 @@ qemuProcessEventSubmit(virDomainObj *vm,
|
||||
static void
|
||||
qemuProcessHandleMonitorEOF(qemuMonitor *mon,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
qemuDomainObjPrivate *priv;
|
||||
|
||||
virObjectLock(vm);
|
||||
@ -332,7 +331,7 @@ qemuProcessHandleMonitorEOF(qemuMonitor *mon,
|
||||
|
||||
/* We don't want any cleanup from EOF handler (or any other
|
||||
* thread) to enter qemu namespace. */
|
||||
qemuDomainDestroyNamespace(driver, vm);
|
||||
qemuDomainDestroyNamespace(priv->driver, vm);
|
||||
|
||||
cleanup:
|
||||
virObjectUnlock(vm);
|
||||
@ -348,17 +347,18 @@ qemuProcessHandleMonitorEOF(qemuMonitor *mon,
|
||||
static void
|
||||
qemuProcessHandleMonitorError(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
qemuDomainObjPrivate *priv;
|
||||
virObjectEvent *event = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
VIR_DEBUG("Received error on %p '%s'", vm, vm->def->name);
|
||||
|
||||
((qemuDomainObjPrivate *) vm->privateData)->monError = true;
|
||||
priv = vm->privateData;
|
||||
priv->monError = true;
|
||||
event = virDomainEventControlErrorNewFromObj(vm);
|
||||
virObjectEventStateQueue(driver->domainEventState, event);
|
||||
virObjectEventStateQueue(priv->driver->domainEventState, event);
|
||||
|
||||
virObjectUnlock(vm);
|
||||
}
|
||||
@ -409,15 +409,17 @@ qemuProcessFindDomainDiskByAliasOrQOM(virDomainObj *vm,
|
||||
static void
|
||||
qemuProcessHandleReset(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
qemuDomainObjPrivate *priv;
|
||||
virDomainState state;
|
||||
int reason;
|
||||
|
||||
virObjectLock(vm);
|
||||
priv = vm->privateData;
|
||||
driver = priv->driver;
|
||||
|
||||
state = virDomainObjGetState(vm, &reason);
|
||||
|
||||
@ -430,7 +432,6 @@ qemuProcessHandleReset(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
}
|
||||
|
||||
event = virDomainEventRebootNewFromObj(vm);
|
||||
priv = vm->privateData;
|
||||
if (priv->agent)
|
||||
qemuAgentNotifyEvent(priv->agent, QEMU_AGENT_EVENT_RESET);
|
||||
|
||||
@ -542,14 +543,15 @@ qemuProcessHandleEvent(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
long long seconds,
|
||||
unsigned int micros,
|
||||
const char *details,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
|
||||
VIR_DEBUG("vm=%p", vm);
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
event = virDomainQemuMonitorEventNew(vm->def->id, vm->def->name,
|
||||
vm->def->uuid, eventName,
|
||||
seconds, micros, details);
|
||||
@ -563,9 +565,9 @@ static void
|
||||
qemuProcessHandleShutdown(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
virTristateBool guest_initiated,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
qemuDomainObjPrivate *priv;
|
||||
virObjectEvent *event = NULL;
|
||||
int detail = 0;
|
||||
@ -575,6 +577,8 @@ qemuProcessHandleShutdown(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virObjectLock(vm);
|
||||
|
||||
priv = vm->privateData;
|
||||
driver = priv->driver;
|
||||
|
||||
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_SHUTDOWN) {
|
||||
VIR_DEBUG("Ignoring repeated SHUTDOWN event from domain %s",
|
||||
vm->def->name);
|
||||
@ -633,9 +637,9 @@ qemuProcessHandleShutdown(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
static void
|
||||
qemuProcessHandleStop(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
virDomainPausedReason reason;
|
||||
virDomainEventSuspendedDetailType detail;
|
||||
@ -643,6 +647,7 @@ qemuProcessHandleStop(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
|
||||
virObjectLock(vm);
|
||||
|
||||
driver = priv->driver;
|
||||
reason = priv->pausedReason;
|
||||
priv->pausedReason = VIR_DOMAIN_PAUSED_UNKNOWN;
|
||||
|
||||
@ -690,9 +695,9 @@ qemuProcessHandleStop(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
static void
|
||||
qemuProcessHandleResume(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
qemuDomainObjPrivate *priv;
|
||||
virDomainRunningReason reason = VIR_DOMAIN_RUNNING_UNPAUSED;
|
||||
@ -701,6 +706,8 @@ qemuProcessHandleResume(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virObjectLock(vm);
|
||||
|
||||
priv = vm->privateData;
|
||||
driver = priv->driver;
|
||||
|
||||
if (priv->runningReason != VIR_DOMAIN_RUNNING_UNKNOWN) {
|
||||
reason = priv->runningReason;
|
||||
priv->runningReason = VIR_DOMAIN_RUNNING_UNKNOWN;
|
||||
@ -728,12 +735,13 @@ static void
|
||||
qemuProcessHandleRTCChange(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
long long offset,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
|
||||
if (vm->def->clock.offset == VIR_DOMAIN_CLOCK_OFFSET_VARIABLE) {
|
||||
/* when a basedate is manually given on the qemu commandline
|
||||
@ -769,13 +777,14 @@ static void
|
||||
qemuProcessHandleWatchdog(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
int action,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *watchdogEvent = NULL;
|
||||
virObjectEvent *lifecycleEvent = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
watchdogEvent = virDomainEventWatchdogNewFromObj(vm, action);
|
||||
|
||||
if (action == VIR_DOMAIN_EVENT_WATCHDOG_PAUSE &&
|
||||
@ -814,9 +823,9 @@ qemuProcessHandleIOError(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
const char *nodename,
|
||||
int action,
|
||||
const char *reason,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *ioErrorEvent = NULL;
|
||||
virObjectEvent *ioErrorEvent2 = NULL;
|
||||
virObjectEvent *lifecycleEvent = NULL;
|
||||
@ -825,6 +834,7 @@ qemuProcessHandleIOError(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainDiskDef *disk;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
|
||||
if (*diskAlias == '\0')
|
||||
diskAlias = NULL;
|
||||
@ -980,9 +990,9 @@ qemuProcessHandleGraphics(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
const char *authScheme,
|
||||
const char *x509dname,
|
||||
const char *saslUsername,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event;
|
||||
virDomainEventGraphicsAddressPtr localAddr = NULL;
|
||||
virDomainEventGraphicsAddressPtr remoteAddr = NULL;
|
||||
@ -1013,6 +1023,7 @@ qemuProcessHandleGraphics(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
}
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
event = virDomainEventGraphicsNewFromObj(vm, phase, localAddr, remoteAddr, authScheme, subject);
|
||||
virObjectUnlock(vm);
|
||||
|
||||
@ -1025,13 +1036,14 @@ qemuProcessHandleTrayChange(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
const char *devAlias,
|
||||
const char *devid,
|
||||
int reason,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
virDomainDiskDef *disk;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
disk = qemuProcessFindDomainDiskByAliasOrQOM(vm, devAlias, devid);
|
||||
|
||||
if (disk) {
|
||||
@ -1053,13 +1065,14 @@ qemuProcessHandleTrayChange(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
static void
|
||||
qemuProcessHandlePMWakeup(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
virObjectEvent *lifecycleEvent = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
event = virDomainEventPMWakeupNewFromObj(vm);
|
||||
|
||||
/* Don't set domain status back to running if it wasn't paused
|
||||
@ -1085,13 +1098,14 @@ qemuProcessHandlePMWakeup(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
static void
|
||||
qemuProcessHandlePMSuspend(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
virObjectEvent *lifecycleEvent = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
event = virDomainEventPMSuspendNewFromObj(vm);
|
||||
|
||||
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
|
||||
@ -1121,13 +1135,14 @@ static void
|
||||
qemuProcessHandleBalloonChange(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
unsigned long long actual,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
size_t i;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
event = virDomainEventBalloonChangeNewFromObj(vm, actual);
|
||||
|
||||
/* We want the balloon size stored in domain definition to
|
||||
@ -1154,13 +1169,14 @@ qemuProcessHandleBalloonChange(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
static void
|
||||
qemuProcessHandlePMSuspendDisk(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
virObjectEvent *lifecycleEvent = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
event = virDomainEventPMSuspendDiskNewFromObj(vm);
|
||||
|
||||
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
|
||||
@ -1230,12 +1246,13 @@ qemuProcessHandleDeviceUnplugErr(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
const char *devPath,
|
||||
const char *devAlias,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
|
||||
VIR_DEBUG("Device %s QOM path %s failed to be removed from domain %p %s",
|
||||
devAlias, devPath, vm, vm->def->name);
|
||||
@ -1325,12 +1342,13 @@ qemuProcessHandleAcpiOstInfo(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
const char *slot,
|
||||
unsigned int source,
|
||||
unsigned int status,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
|
||||
VIR_DEBUG("ACPI OST info for device %s domain %p %s. "
|
||||
"slotType='%s' slot='%s' source=%u status=%u",
|
||||
@ -1361,10 +1379,10 @@ qemuProcessHandleBlockThreshold(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
const char *nodename,
|
||||
unsigned long long threshold,
|
||||
unsigned long long excess,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
qemuDomainObjPrivate *priv;
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *eventSource = NULL;
|
||||
virObjectEvent *eventDevice = NULL;
|
||||
virDomainDiskDef *disk;
|
||||
@ -1374,6 +1392,7 @@ qemuProcessHandleBlockThreshold(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virObjectLock(vm);
|
||||
|
||||
priv = vm->privateData;
|
||||
driver = priv->driver;
|
||||
|
||||
VIR_DEBUG("BLOCK_WRITE_THRESHOLD event for block node '%s' in domain %p %s:"
|
||||
"threshold '%llu' exceeded by '%llu'",
|
||||
@ -1474,11 +1493,11 @@ static void
|
||||
qemuProcessHandleMigrationStatus(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
int status,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
qemuDomainObjPrivate *priv;
|
||||
qemuDomainJobDataPrivate *privJob = NULL;
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
int reason;
|
||||
|
||||
@ -1489,6 +1508,8 @@ qemuProcessHandleMigrationStatus(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
qemuMonitorMigrationStatusTypeToString(status));
|
||||
|
||||
priv = vm->privateData;
|
||||
driver = priv->driver;
|
||||
|
||||
if (priv->job.asyncJob == VIR_ASYNC_JOB_NONE) {
|
||||
VIR_DEBUG("got MIGRATION event without a migration job");
|
||||
goto cleanup;
|
||||
@ -1524,9 +1545,8 @@ static void
|
||||
qemuProcessHandleMigrationPass(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
int pass,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
qemuDomainObjPrivate *priv;
|
||||
|
||||
virObjectLock(vm);
|
||||
@ -1540,7 +1560,7 @@ qemuProcessHandleMigrationPass(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
virObjectEventStateQueue(driver->domainEventState,
|
||||
virObjectEventStateQueue(priv->driver->domainEventState,
|
||||
virDomainEventMigrationIterationNewFromObj(vm, pass));
|
||||
|
||||
cleanup:
|
||||
@ -1677,15 +1697,16 @@ static void
|
||||
qemuProcessHandleMemoryFailure(qemuMonitor *mon G_GNUC_UNUSED,
|
||||
virDomainObj *vm,
|
||||
qemuMonitorEventMemoryFailure *mfp,
|
||||
void *opaque)
|
||||
void *opaque G_GNUC_UNUSED)
|
||||
{
|
||||
virQEMUDriver *driver = opaque;
|
||||
virQEMUDriver *driver;
|
||||
virObjectEvent *event = NULL;
|
||||
virDomainMemoryFailureRecipientType recipient;
|
||||
virDomainMemoryFailureActionType action;
|
||||
unsigned int flags = 0;
|
||||
|
||||
virObjectLock(vm);
|
||||
driver = QEMU_DOMAIN_PRIVATE(vm)->driver;
|
||||
|
||||
switch (mfp->recipient) {
|
||||
case QEMU_MONITOR_MEMORY_FAILURE_RECIPIENT_HYPERVISOR:
|
||||
|
Loading…
x
Reference in New Issue
Block a user