LGTM, thanks On Thu, Oct 8, 2015 at 5:40 AM, Dimitris Aragiorgis < [email protected]> wrote:
> This will allow the user to explicitly set the type of SCSI > controller to use. The available types are: lsi, virtio-scsi-pci, > and megasas. QEMU uses lsi by default and so does Ganeti. > > Signed-off-by: Dimitris Aragiorgis <[email protected]> > --- > lib/hypervisor/hv_kvm/__init__.py | 15 ++++++++++----- > man/gnt-instance.rst | 11 +++++++++++ > src/Ganeti/Constants.hs | 22 ++++++++++++++++++++++ > 3 files changed, 43 insertions(+), 5 deletions(-) > > diff --git a/lib/hypervisor/hv_kvm/__init__.py > b/lib/hypervisor/hv_kvm/__init__.py > index 4dc79d5..bac72c0 100644 > --- a/lib/hypervisor/hv_kvm/__init__.py > +++ b/lib/hypervisor/hv_kvm/__init__.py > @@ -476,6 +476,8 @@ class KVMHypervisor(hv_base.BaseHypervisor): > hv_base.ParamInSet(True, constants.HT_KVM_VALID_NIC_TYPES), > constants.HV_DISK_TYPE: > hv_base.ParamInSet(True, constants.HT_KVM_VALID_DISK_TYPES), > + constants.HV_KVM_SCSI_CONTROLLER_TYPE: > + hv_base.ParamInSet(True, > constants.HT_KVM_VALID_SCSI_CONTROLLER_TYPES), > constants.HV_KVM_CDROM_DISK_TYPE: > hv_base.ParamInSet(False, constants.HT_KVM_VALID_DISK_TYPES), > constants.HV_USB_MOUSE: > @@ -1230,11 +1232,14 @@ class KVMHypervisor(hv_base.BaseHypervisor): > soundhw = hvp[constants.HV_SOUNDHW] > kvm_cmd.extend(["-soundhw", soundhw]) > > - if hvp[constants.HV_DISK_TYPE] == constants.HT_DISK_SCSI: > - # In case a SCSI disk is given, QEMU adds > - # a SCSI contorller (LSI Logic / Symbios Logic 53c895a) > - # implicitly. > - pass > + if hvp[constants.HV_DISK_TYPE] in constants.HT_SCSI_DEVICE_TYPES: > + # In case a SCSI disk is given, QEMU adds a SCSI contorller > + # (LSI Logic / Symbios Logic 53c895a) implicitly. > + # Here, we add the controller explicitly with the default id. > + kvm_cmd.extend([ > + "-device", > + "%s,id=scsi" % hvp[constants.HV_KVM_SCSI_CONTROLLER_TYPE] > + ]) > > kvm_cmd.extend(["-balloon", "virtio"]) > kvm_cmd.extend(["-daemonize"]) > diff --git a/man/gnt-instance.rst b/man/gnt-instance.rst > index a29fd79..03d8fc9 100644 > --- a/man/gnt-instance.rst > +++ b/man/gnt-instance.rst > @@ -333,6 +333,17 @@ vif\_type > - ioemu > - vif > > +scsi\_controller\_type > + Valid for the KVM hypervisor. > + > + This parameter specifies which type of SCSI controller to use. > + The possible options are: > + > + - lsi [default] > + - megasas > + - virtio-scsi-pci > + > + > disk\_type > Valid for the Xen HVM and KVM hypervisors. > > diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs > index 7b8ece5..98d6805 100644 > --- a/src/Ganeti/Constants.hs > +++ b/src/Ganeti/Constants.hs > @@ -1697,6 +1697,9 @@ hvKvmPath = "kvm_path" > hvKvmDiskAio :: String > hvKvmDiskAio = "disk_aio" > > +hvKvmScsiControllerType :: String > +hvKvmScsiControllerType = "scsi_controller_type" > + > hvKvmSpiceAudioCompr :: String > hvKvmSpiceAudioCompr = "spice_playback_compression" > > @@ -1903,6 +1906,7 @@ hvsParameterTypes = Map.fromList > , (hvKvmMigrationCaps, VTypeString) > , (hvKvmPath, VTypeString) > , (hvKvmDiskAio, VTypeString) > + , (hvKvmScsiControllerType, VTypeString) > , (hvKvmSpiceAudioCompr, VTypeBool) > , (hvKvmSpiceBind, VTypeString) > , (hvKvmSpiceIpVersion, VTypeInt) > @@ -2762,6 +2766,23 @@ htKvmValidDiskTypes = > htDiskScsiHd, > htDiskScsiCd] > > +-- * SCSI controller types > + > +htScsiControllerLsi :: String > +htScsiControllerLsi = "lsi" > + > +htScsiControllerVirtio :: String > +htScsiControllerVirtio = "virtio-scsi-pci" > + > +htScsiControllerMegasas :: String > +htScsiControllerMegasas = "megasas" > + > +htKvmValidScsiControllerTypes :: FrozenSet String > +htKvmValidScsiControllerTypes = > + ConstantUtils.mkSet [htScsiControllerLsi, > + htScsiControllerVirtio, > + htScsiControllerMegasas] > + > htCacheDefault :: String > htCacheDefault = "default" > > @@ -4036,6 +4057,7 @@ hvcDefaults = > , (hvVncX509, PyValueEx "") > , (hvVncX509Verify, PyValueEx False) > , (hvVncPasswordFile, PyValueEx "") > + , (hvKvmScsiControllerType, PyValueEx > htScsiControllerLsi) > , (hvKvmSpiceBind, PyValueEx "") > , (hvKvmSpiceIpVersion, PyValueEx > ifaceNoIpVersionSpecified) > , (hvKvmSpicePasswordFile, PyValueEx "") > -- > 1.7.10.4 > > Hrvoje Ribicic Ganeti Engineering Google Germany GmbH Dienerstr. 12, 80331, München Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Diese E-Mail ist vertraulich. Wenn Sie nicht der richtige Adressat sind, leiten Sie diese bitte nicht weiter, informieren Sie den Absender und löschen Sie die E-Mail und alle Anhänge. Vielen Dank. This e-mail is confidential. If you are not the right addressee please do not forward it, please inform the sender, and please erase this e-mail including any attachments. Thanks.
