]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainAttachDiskGeneric: Avoid unneeded disk property refresh after hotplug
authorPeter Krempa <pkrempa@redhat.com>
Thu, 5 Feb 2026 13:18:46 +0000 (14:18 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 12 Feb 2026 15:45:34 +0000 (16:45 +0100)
The only thing the call to 'qemuProcessRefreshDiskProps' would update
from data gathered from a 'query-block' QMP call would be the state of
the tray of the device. We know that only CDROM devices have a tray and
after hotplug it's closed.

Remove the unneeded code and adjust tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c
tests/qemuhotplugtest.c

index 0d5da456c59e4ac2bb6a4accd4422e5c66a2a26e..e1e56889421386118aa21f729647bce688aa5e58 100644 (file)
@@ -711,6 +711,9 @@ qemuDomainAttachDiskGeneric(virDomainObj *vm,
     g_autoptr(qemuSnapshotDiskContext) transientDiskSnapshotCtxt = NULL;
     bool origReadonly = disk->src->readonly;
 
+    if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM)
+        disk->tray_status = VIR_DOMAIN_DISK_TRAY_CLOSED;
+
     if (!virStorageSourceIsEmpty(disk->src)) {
         if (disk->transient)
             disk->src->readonly = true;
@@ -803,21 +806,12 @@ qemuDomainAttachDiskGeneric(virDomainObj *vm,
      */
     if (rc == 0) {
         qemuDomainDiskPrivate *diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
-        g_autoptr(GHashTable) blockinfo = NULL;
 
         if (qemuDiskConfigBlkdeviotuneEnabled(disk)) {
             if (qemuMonitorSetBlockIoThrottle(priv->mon, diskPriv->qomName,
                                               &disk->blkdeviotune) < 0)
                 VIR_WARN("failed to set blkdeviotune for '%s' of '%s'", disk->dst, vm->def->name);
         }
-
-        if ((blockinfo = qemuMonitorGetBlockInfo(priv->mon))) {
-            struct qemuDomainDiskInfo *diskinfo;
-
-            if ((diskinfo = virHashLookup(blockinfo, diskPriv->qomName))) {
-                qemuProcessRefreshDiskProps(disk, diskinfo);
-            }
-        }
     }
 
     if (rc == 0 &&
index 7881ccf32711369178099515b7995f0f73a8bbe7..58413b6e0d6f2c40b4d89e6ecb879fb7c046a9cc 100644 (file)
@@ -541,7 +541,6 @@ mymain(void)
 
 
 #define QMP_OK      "{\"return\": {}}"
-#define QMP_EMPTY_ARRAY "{\"return\": []}"
 
 #define QMP_DEVICE_DELETED(dev) \
     "{" \
@@ -579,8 +578,7 @@ mymain(void)
 
     DO_TEST_ATTACH("x86_64", "base-live", "disk-virtio", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-virtio", true, true,
                    "device_del", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-virtio", false, false,
@@ -589,8 +587,7 @@ mymain(void)
 
     DO_TEST_ATTACH("x86_64", "base-live", "disk-usb", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-usb", true, true,
                    "device_del", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-usb", false, false,
@@ -599,8 +596,7 @@ mymain(void)
 
     DO_TEST_ATTACH("x86_64", "base-live", "disk-scsi", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-scsi", true, true,
                    "device_del", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-scsi", false, false,
@@ -614,8 +610,7 @@ mymain(void)
                    "device_add", QMP_OK,
                    "device_add", QMP_OK,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-with-scsi-controller-live", "disk-scsi-2", true, true,
                    "device_del", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-with-scsi-controller-live", "disk-scsi-2", false, false,
@@ -625,8 +620,7 @@ mymain(void)
     DO_TEST_ATTACH("x86_64", "base-live", "disk-scsi-multipath", false, true,
                    "object-add", QMP_OK,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-scsi-multipath", true, true,
                    "device_del", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "disk-scsi-multipath", false, false,
@@ -644,16 +638,14 @@ mymain(void)
 
     DO_TEST_ATTACH("s390x", "base-ccw-live", "ccw-virtio", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("s390x", "base-ccw-live", "ccw-virtio", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk4") QMP_OK,
                    "blockdev-del", QMP_OK);
 
     DO_TEST_ATTACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
 
     DO_TEST_DETACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk0") QMP_OK,
@@ -661,8 +653,7 @@ mymain(void)
 
     DO_TEST_ATTACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
 
     DO_TEST_DETACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk0") QMP_OK,
@@ -671,16 +662,14 @@ mymain(void)
     /* Attach a second device, then detach the first one. Then attach the first one again. */
     DO_TEST_ATTACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
 
     DO_TEST_DETACH("s390x", "base-ccw-live-with-2-ccw-virtio", "ccw-virtio-1-explicit", false, true,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk4") QMP_OK);
 
     DO_TEST_ATTACH("s390x", "base-ccw-live-with-2-ccw-virtio", "ccw-virtio-1-reverse", false, false,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
 
     DO_TEST_ATTACH("x86_64", "base-live", "ivshmem-plain", false, true,
                    "object-add", QMP_OK,
@@ -697,8 +686,7 @@ mymain(void)
     DO_TEST_ATTACH("x86_64", "base-live+disk-scsi-wwn",
                    "disk-scsi-duplicate-wwn", false, false,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
 
     DO_TEST_ATTACH("x86_64", "base-live", "hostdev-pci", false, true,
                    "device_add", QMP_OK);
@@ -747,7 +735,6 @@ mymain(void)
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK,
                    "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY,
                    "qom-set", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "cdrom-usb", true, true,
                    "device_del", QMP_OK);
@@ -757,8 +744,7 @@ mymain(void)
 
     DO_TEST_ATTACH("x86_64", "base-live", "cdrom-scsi", false, true,
                    "blockdev-add", QMP_OK,
-                   "device_add", QMP_OK,
-                   "query-block", QMP_EMPTY_ARRAY);
+                   "device_add", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "cdrom-scsi", true, true,
                    "device_del", QMP_OK);
     DO_TEST_DETACH("x86_64", "base-live", "cdrom-scsi", false, false,