summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2023-04-19 15:57:14 +0200
committerPeter Krempa <pkrempa@redhat.com>2023-04-24 12:57:56 +0200
commitb60efa9a39734c470b274dc2aa43653e64e643c9 (patch)
treeda0bb87d1f5a622884e330c853c64a998061d766
parentc8e7ed7f7bdae18a2405ab871c763df5ce583023 (diff)
downloadlibvirt-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.c39
-rw-r--r--src/qemu/qemu_process.h3
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);