[libvirt] qemu: hotplug virtio_scsi over lsilogic when sicsi controller is not present?

Liang Yan lyan at suse.com
Tue Jul 11 19:47:55 UTC 2017


Hi,

We hit some problems when we attached some lun devices in our vm, turns
out that libvirt created lsilogic scsi controller automatically for
these scsi devices, however these device works well under virtio_scsi
controller.

the current code logic is check lsilogic first, if qemu could not
support it, then check virtio_scsi, however is it better to check
virtio_scsi earlier? since it is supported better in qemu level?

I am wondering which solution is better?
1. simple switch sequence and check virtio_scsi first

2. add extra option for "virsh attach-disk" to choose specific
controller type 

Thanks,
Liang


====================================
Code part is like below

qemu_hotplug.c  qemuDomainFindOrCreateSCSIDiskController

    /* No SCSI controller present, for backward compatibility we
     * now hotplug a controller */
    if (VIR_ALLOC(cont) < 0)
        return NULL;
    cont->type = VIR_DOMAIN_CONTROLLER_TYPE_SCSI;
    cont->idx = controller;
    cont->model = -1;

    VIR_INFO("No SCSI controller present, hotplugging one");
    if (qemuDomainAttachControllerDevice(driver, 



qemu_domain_address.c  qemuDomainSetSCSIControllerModel

        if (qemuDomainIsPSeries(def)) {
            *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI;
        } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_LSI)) {
            *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC;
        } else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_SCSI)) {
            *model = VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI;
        } else {
            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                           _("Unable to determine model for scsi
controller"));
            return -1;





More information about the libvir-list mailing list