diff options
author | Peter Krempa <pkrempa@redhat.com> | 2023-04-19 15:57:14 +0200 |
---|---|---|
committer | Peter Krempa <pkrempa@redhat.com> | 2023-04-24 12:57:56 +0200 |
commit | b60efa9a39734c470b274dc2aa43653e64e643c9 (patch) | |
tree | da0bb87d1f5a622884e330c853c64a998061d766 | |
parent | c8e7ed7f7bdae18a2405ab871c763df5ce583023 (diff) | |
download | libvirt-b60efa9a39734c470b274dc2aa43653e64e643c9.tar.gz |
qemuProcessRefreshDisks: Extract update of a single disk
Extract the logic to update one single disk (without emitting any
events) so that it can be reused when updating the state after a disk
hotplug.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
-rw-r--r-- | src/qemu/qemu_process.c | 39 | ||||
-rw-r--r-- | src/qemu/qemu_process.h | 3 |
2 files changed, 27 insertions, 15 deletions
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d8d755af50..05437c2161 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8673,6 +8673,29 @@ qemuProcessAutoDestroy(virDomainObj *dom, } +void +qemuProcessRefreshDiskProps(virDomainDiskDef *disk, + struct qemuDomainDiskInfo *info) +{ + qemuDomainDiskPrivate *diskpriv = QEMU_DOMAIN_DISK_PRIVATE(disk); + + if (info->removable) { + if (info->empty) + virDomainDiskEmptySource(disk); + + if (info->tray) { + if (info->tray_open) + disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN; + else + disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; + } + } + + diskpriv->removable = info->removable; + diskpriv->tray = info->tray; +} + + int qemuProcessRefreshDisks(virDomainObj *vm, virDomainAsyncJob asyncJob) @@ -8703,21 +8726,7 @@ qemuProcessRefreshDisks(virDomainObj *vm, if (!(info = virHashLookup(table, entryname))) continue; - if (info->removable) { - if (info->empty) - virDomainDiskEmptySource(disk); - - if (info->tray) { - if (info->tray_open) - disk->tray_status = VIR_DOMAIN_DISK_TRAY_OPEN; - else - disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED; - } - } - - /* fill in additional data */ - diskpriv->removable = info->removable; - diskpriv->tray = info->tray; + qemuProcessRefreshDiskProps(disk, info); if (diskpriv->tray && old_tray_status != disk->tray_status) { diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index b171f0464c..f5c06c2915 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -235,3 +235,6 @@ bool qemuProcessRebootAllowed(const virDomainDef *def); void qemuProcessCleanupMigrationJob(virQEMUDriver *driver, virDomainObj *vm); + +void qemuProcessRefreshDiskProps(virDomainDiskDef *disk, + struct qemuDomainDiskInfo *info); |