]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Clean up qemuDomainDefaultSCSIControllerModel()
authorAndrea Bolognani <abologna@redhat.com>
Tue, 13 Feb 2024 15:00:08 +0000 (16:00 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Tue, 8 Jul 2025 09:05:10 +0000 (11:05 +0200)
Use a better order for sections, improve comments, tweak
formatting.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_domain.c

index cdf43e788a0a66d9db1f113e7c8892b5e7700c80..8c7ba138519b331e19085802da2495b748b59538 100644 (file)
@@ -4233,8 +4233,9 @@ qemuDomainDefAddDefaultAudioBackend(virQEMUDriver *driver,
 
 
 /**
- * @def: Domain definition
- * @qemuCaps: qemu capabilities
+ * qemuDomainDefaultSCSIControllerModel:
+ * @def: domain definition
+ * @qemuCaps: QEMU capabilities, or NULL
  *
  * Choose a reasonable model to use for a SCSI controller where a
  * specific one hasn't been provided by the user.
@@ -4255,17 +4256,28 @@ virDomainControllerModelSCSI
 qemuDomainDefaultSCSIControllerModel(const virDomainDef *def,
                                      virQEMUCaps *qemuCaps)
 {
-    if (qemuDomainIsPSeries(def))
-        return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
-    if (ARCH_IS_S390(def->os.arch) || qemuDomainIsARMVirt(def) ||
+    /* For machine types with built-in SCSI controllers, the choice
+     * of model is obvious */
+    if (qemuDomainHasBuiltinESP(def))
+        return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90;
+
+    /* Most new architectures should ideally use virtio */
+    if (ARCH_IS_S390(def->os.arch) ||
+        qemuDomainIsARMVirt(def) ||
         qemuDomainIsLoongArchVirt(def))
         return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI;
+
+    /* pSeries has its own special default */
+    if (qemuDomainIsPSeries(def))
+        return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
+
+    /* If there is no preference, base the choice on device
+     * availability. In this case, lsilogic is favored over
+     * virtio-scsi for backwards compatibility reasons */
     if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI))
         return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
     if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_SCSI))
         return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI;
-    if (qemuDomainHasBuiltinESP(def))
-        return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_NCR53C90;
 
     return VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT;
 }