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>
This commit is contained in:
Peter Krempa 2023-04-19 15:57:14 +02:00
parent c8e7ed7f7b
commit b60efa9a39
2 changed files with 27 additions and 15 deletions

View File

@ -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) {

View File

@ -235,3 +235,6 @@ bool qemuProcessRebootAllowed(const virDomainDef *def);
void qemuProcessCleanupMigrationJob(virQEMUDriver *driver,
virDomainObj *vm);
void qemuProcessRefreshDiskProps(virDomainDiskDef *disk,
struct qemuDomainDiskInfo *info);