On 7/14/17 3:56 AM, Martin Kletzander wrote: > On Tue, Jul 11, 2017 at 03:47:55PM -0400, Liang Yan wrote: >> 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? >> > > It is not in older QEMUs which we need to stay compatible with. > Yes, Peter said similar things that kernel may not include newer driver. >> I am wondering which solution is better? >> 1. simple switch sequence and check virtio_scsi first >> > > We can't do that. We have to keep parsing older XMLs (that did not have > the model in them) the same way as we were before so that we keep stable > guest ABI. > >> 2. add extra option for "virsh attach-disk" to choose specific >> controller type >> > > Or you can first attach the controller and then attach-device with the > xml that specifies that particular controller. attach-disk is a > syntactic sugar for attach-device IIRC. > Yes, this is our current workaround. Some users are just wondering if could finish this process by command line(attach-disk) in one step. I checked the options of attach-disk that "-targetbus" is a close one but focus on high level bus controller.
Anyway, thanks for the response, I think what I need to do now is update
our document to make it more clearly. Please let me know if you have
different decision in the future.
Thanks,
Liang
>> 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;
>>
>>
>> --
>> libvir-list mailing list
>> [email protected]
>> https://www.redhat.com/mailman/listinfo/libvir-list
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
