From: Peter Krempa <[email protected]> Modify the monitor code to directly return values from 'virDomainDiskTray' enum instead of two bools.
This allows simplification of the other code: - qemuProcessRefreshDiskProps just assigns the value, thus can be deleted - old_tray_status is no longer needed as we can directly access the disk status instead and assign later Signed-off-by: Peter Krempa <[email protected]> --- src/qemu/qemu_domain.h | 3 +-- src/qemu/qemu_monitor_json.c | 14 +++++++++++--- src/qemu/qemu_process.c | 26 ++++++-------------------- src/qemu/qemu_process.h | 3 --- tests/qemumonitorjsontest.c | 8 ++++---- 5 files changed, 22 insertions(+), 32 deletions(-) diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 2a881a8285..d4f6c256cd 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -355,8 +355,7 @@ struct _qemuDomainVcpuPrivate { struct qemuDomainDiskInfo { - bool tray; - bool tray_open; + virDomainDiskTray tray_status; virDomainDiskErrorCode io_status; }; diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 50e0497385..971e8dd63f 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -2347,10 +2347,14 @@ qemuMonitorJSONGetBlockInfo(qemuMonitor *mon, for (i = 0; i < virJSONValueArraySize(devices); i++) { virJSONValue *dev; - struct qemuDomainDiskInfo info = { .io_status = VIR_DOMAIN_DISK_ERROR_NONE }; + struct qemuDomainDiskInfo info = { + .tray_status = VIR_DOMAIN_DISK_TRAY_NONE, + .io_status = VIR_DOMAIN_DISK_ERROR_NONE + }; const char *thisdev; const char *status; const char *qdev; + bool tray_open; if (!(dev = qemuMonitorJSONGetBlockDev(devices, i))) return -1; @@ -2371,8 +2375,12 @@ qemuMonitorJSONGetBlockInfo(qemuMonitor *mon, } /* 'tray_open' is present only if the device has a tray */ - if (virJSONValueObjectGetBoolean(dev, "tray_open", &info.tray_open) == 0) - info.tray = true; + if (virJSONValueObjectGetBoolean(dev, "tray_open", &tray_open) == 0) { + if (tray_open) + info.tray_status = VIR_DOMAIN_DISK_TRAY_OPEN; + else + info.tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; + } /* Missing io-status indicates no error */ if ((status = virJSONValueObjectGetString(dev, "io-status"))) { diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 2142198589..0b78d45ef6 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8661,7 +8661,6 @@ qemuProcessRefreshDisks(virDomainObj *vm, qemuDomainDiskPrivate *diskpriv = QEMU_DOMAIN_DISK_PRIVATE(disk); struct qemuDomainDiskInfo *info; const char *entryname = disk->info.alias; - virDomainDiskTray old_tray_status = disk->tray_status; if (diskpriv->qomName) entryname = diskpriv->qomName; @@ -8669,20 +8668,20 @@ qemuProcessRefreshDisks(virDomainObj *vm, if (!(info = virHashLookup(table, entryname))) continue; - qemuProcessRefreshDiskProps(disk, info); - - if (old_tray_status != VIR_DOMAIN_DISK_TRAY_NONE && - disk->tray_status != VIR_DOMAIN_DISK_TRAY_NONE && - old_tray_status != disk->tray_status) { + if (disk->tray_status != VIR_DOMAIN_DISK_TRAY_NONE && + info->tray_status != VIR_DOMAIN_DISK_TRAY_NONE && + disk->tray_status != info->tray_status) { virDomainEventTrayChangeReason reason = VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN; virObjectEvent *event; - if (disk->tray_status == VIR_DOMAIN_DISK_TRAY_CLOSED) + if (info->tray_status == VIR_DOMAIN_DISK_TRAY_CLOSED) reason = VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE; event = virDomainEventTrayChangeNewFromObj(vm, disk->info.alias, reason); virObjectEventStateQueue(driver->domainEventState, event); } + + disk->tray_status = info->tray_status; } return 0; @@ -9587,19 +9586,6 @@ qemuProcessAutoDestroy(virDomainObj *dom, } -void -qemuProcessRefreshDiskProps(virDomainDiskDef *disk, - struct qemuDomainDiskInfo *info) -{ - if (info->tray) { - if (info->tray_open) - disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN; - else - disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; - } -} - - static int qemuProcessRefreshCPUMigratability(virDomainObj *vm, virDomainAsyncJob asyncJob) diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 201b3ebb63..df63cac9b8 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -257,9 +257,6 @@ bool qemuProcessRebootAllowed(const virDomainDef *def); void qemuProcessCleanupMigrationJob(virQEMUDriver *driver, virDomainObj *vm); -void qemuProcessRefreshDiskProps(virDomainDiskDef *disk, - struct qemuDomainDiskInfo *info); - int qemuProcessSetupEmulator(virDomainObj *vm); void qemuProcessHandleNbdkitExit(qemuNbdkitProcess *nbdkit, diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 9c9b3397ad..c10faa6a6f 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -1353,8 +1353,8 @@ testQemuMonitorJSONqemuMonitorJSONGetBalloonInfo(const void *opaque) static void testQemuMonitorJSONGetBlockInfoPrint(const struct qemuDomainDiskInfo *d) { - VIR_TEST_VERBOSE("tray: %d, tray_open: %d, io_status: %d", - d->tray, d->tray_open, d->io_status); + VIR_TEST_VERBOSE("tray_status: %d, io_status: %d", + d->tray_status, d->io_status); } @@ -1403,7 +1403,7 @@ testQemuMonitorJSONqemuMonitorJSONGetBlockInfo(const void *opaque) info = g_new0(struct qemuDomainDiskInfo, 1); - info->tray = true; + info->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; if (virHashAddEntry(expectedBlockDevices, "ide0-1-0", info) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -1413,7 +1413,7 @@ testQemuMonitorJSONqemuMonitorJSONGetBlockInfo(const void *opaque) info = g_new0(struct qemuDomainDiskInfo, 1); - info->tray = true; + info->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; if (virHashAddEntry(expectedBlockDevices, "ide0-1-1", info) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", -- 2.53.0
