From 9bd84112f984adf4545527ce80a00b0976ebce45 Mon Sep 17 00:00:00 2001 From: Charles Arnold Date: Mon, 4 Feb 2013 19:46:15 +0000 Subject: [PATCH] - bnc#801988 - virt-manager requires for vtemodule.so wrong on s390x virt-manager.spec - bnc#801987 - virt-manager is not able to create new VM in qemu Updated virtman-vminstall.diff - fate##314135: Support PVSCSI on XEN and VirtioSCSI on KVM - Implement pass through block device - fate##313076: HBA passthrough for kvm virtman-git-scsi.diff virtman-git-scsi-lun.diff OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=111 --- virt-manager.changes | 21 ++++++++ virt-manager.spec | 10 ++-- virtman-cdrom.diff | 12 ++--- virtman-device-flags.diff | 27 +++++----- virtman-git-scsi-lun.diff | 33 ++++++++++++ virtman-git-scsi.diff | 103 ++++++++++++++++++++++++++++++++++++++ virtman-vminstall.diff | 24 ++++++--- 7 files changed, 200 insertions(+), 30 deletions(-) create mode 100644 virtman-git-scsi-lun.diff create mode 100644 virtman-git-scsi.diff diff --git a/virt-manager.changes b/virt-manager.changes index bde27ad5..cae5ee78 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Mon Feb 4 12:41:13 MST 2013 - carnold@suse.com + +- bnc#801988 - virt-manager requires for vtemodule.so wrong on s390x + virt-manager.spec + +------------------------------------------------------------------- +Mon Feb 4 10:10:30 MST 2013 - carnold@suse.com + +- bnc#801987 - virt-manager is not able to create new VM in qemu + Updated virtman-vminstall.diff + +------------------------------------------------------------------- +Thu Jan 31 15:32:00 MST 2013 - carnold@suse.com + +- fate##314135: Support PVSCSI on XEN and VirtioSCSI on KVM - + Implement pass through block device +- fate##313076: HBA passthrough for kvm + virtman-git-scsi.diff + virtman-git-scsi-lun.diff + ------------------------------------------------------------------- Wed Jan 2 14:12:13 MST 2013 - carnold@novell.com diff --git a/virt-manager.spec b/virt-manager.spec index 037a43d4..d43bd00a 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -32,6 +32,8 @@ Version: 0.9.4 Release: 0 Url: http://virt-manager.et.redhat.com Source0: virt-manager-%{version}.tar.bz2 +Patch0: virtman-git-scsi.diff +Patch1: virtman-git-scsi-lun.diff Patch50: virtman-desktop.diff Patch51: virtman-vminstall.diff Patch52: virtman-cdrom.diff @@ -65,10 +67,10 @@ Requires: gnome-keyring Requires: libvirt-python >= 0.7.0 Requires: libxml2-python >= 2.6.23 Requires: vm-install >= 0.5.6 -%ifarch x86_64 -Requires: vtemodule.so()(64bit) -%else +%ifarch %{ix86} Requires: vtemodule.so +%else +Requires: vtemodule.so()(64bit) %endif Requires: librsvg Requires: netcat-openbsd @@ -99,6 +101,8 @@ Authors: %prep %setup -q +%patch0 -p1 +%patch1 -p1 %patch50 -p1 %patch51 -p1 %patch52 -p1 diff --git a/virtman-cdrom.diff b/virtman-cdrom.diff index 18fd3bce..b22201f4 100644 --- a/virtman-cdrom.diff +++ b/virtman-cdrom.diff @@ -1,10 +1,10 @@ -Index: virt-manager-0.9.3/src/virtManager/addhardware.py +Index: virt-manager-0.9.4/src/virtManager/addhardware.py =================================================================== ---- virt-manager-0.9.3.orig/src/virtManager/addhardware.py -+++ virt-manager-0.9.3/src/virtManager/addhardware.py -@@ -540,6 +540,7 @@ class vmmAddHardware(vmmGObjectUI): - add_dev("sata", virtinst.VirtualDisk.DEVICE_DISK, "SATA disk") - add_dev("virtio", virtinst.VirtualDisk.DEVICE_DISK, "Virtio disk") +--- virt-manager-0.9.4.orig/src/virtManager/addhardware.py ++++ virt-manager-0.9.4/src/virtManager/addhardware.py +@@ -547,6 +547,7 @@ class vmmAddHardware(vmmGObjectUI): + add_dev("virtio-scsi", virtinst.VirtualDisk.DEVICE_LUN, + _("Virtio SCSI lun")) if self.conn.is_xen(): + add_dev("xen", virtinst.VirtualDisk.DEVICE_CDROM, "Virtual disk (read only)") add_dev("xen", virtinst.VirtualDisk.DEVICE_DISK, "Virtual disk") diff --git a/virtman-device-flags.diff b/virtman-device-flags.diff index bcafa489..9eaae31f 100644 --- a/virtman-device-flags.diff +++ b/virtman-device-flags.diff @@ -1,11 +1,12 @@ -Index: virt-manager-0.9.3/src/virtManager/addhardware.py +Index: virt-manager-0.9.4/src/virtManager/addhardware.py =================================================================== ---- virt-manager-0.9.3.orig/src/virtManager/addhardware.py -+++ virt-manager-0.9.3/src/virtManager/addhardware.py -@@ -1152,6 +1152,18 @@ class vmmAddHardware(vmmGObjectUI): - self._dev.get_xml_config() - logging.debug("Adding device:\n" + self._dev.get_xml_config()) - +--- virt-manager-0.9.4.orig/src/virtManager/addhardware.py ++++ virt-manager-0.9.4/src/virtManager/addhardware.py +@@ -1163,6 +1163,19 @@ class vmmAddHardware(vmmGObjectUI): + if controller is not None: + logging.debug("Adding controller:\n%s", + self._dev.vmm_controller.get_xml_config()) ++ + # If vm is active, Try to hotplug the device and modify persistent + # config in one go + if self.vm.is_active(): @@ -21,10 +22,10 @@ Index: virt-manager-0.9.3/src/virtManager/addhardware.py # Hotplug device attach_err = False try: -Index: virt-manager-0.9.3/src/virtManager/details.py +Index: virt-manager-0.9.4/src/virtManager/details.py =================================================================== ---- virt-manager-0.9.3.orig/src/virtManager/details.py -+++ virt-manager-0.9.3/src/virtManager/details.py +--- virt-manager-0.9.4.orig/src/virtManager/details.py ++++ virt-manager-0.9.4/src/virtManager/details.py @@ -2385,6 +2385,17 @@ class vmmDetails(vmmGObjectUI): text1=(_("Are you sure you want to remove this device?"))): return @@ -43,10 +44,10 @@ Index: virt-manager-0.9.3/src/virtManager/details.py # Define the change try: self.vm.remove_device(dev_id_info) -Index: virt-manager-0.9.3/src/virtManager/domain.py +Index: virt-manager-0.9.4/src/virtManager/domain.py =================================================================== ---- virt-manager-0.9.3.orig/src/virtManager/domain.py -+++ virt-manager-0.9.3/src/virtManager/domain.py +--- virt-manager-0.9.4.orig/src/virtManager/domain.py ++++ virt-manager-0.9.4/src/virtManager/domain.py @@ -757,6 +757,10 @@ class vmmDomain(vmmLibvirtObject): devxml = devobj.get_xml_config() self._backend.attachDevice(devxml) diff --git a/virtman-git-scsi-lun.diff b/virtman-git-scsi-lun.diff new file mode 100644 index 00000000..83e6c772 --- /dev/null +++ b/virtman-git-scsi-lun.diff @@ -0,0 +1,33 @@ + +Subject: Add virtio lun and virtio-scsi lun disk bus option +From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Tue Dec 11 17:06:38 2012 +0800 +Date: Fri Dec 14 19:21:35 2012 -0500: +Git: 8b22d7a763acab05558f36818b8f890c4b428c1d + + As a result of CVE-2011-4127, libvirt disabled generic SCSI + commands passed through to the underlying disk by qemu + from a guest to a virtio disk when device type is "disk" + afer commit 177db087757e4adb02c211de56336a5991c8eb20. + And libvirt introduce a new device type "lun" + to allow SG_IO commands passing through. + This patch allows VM admin to configure this via virt-manager. + +Signed-off-by: Chen Hanxiao + +Index: virt-manager-0.9.4/src/virtManager/addhardware.py +=================================================================== +--- virt-manager-0.9.4.orig/src/virtManager/addhardware.py ++++ virt-manager-0.9.4/src/virtManager/addhardware.py +@@ -540,8 +540,12 @@ class vmmAddHardware(vmmGObjectUI): + if self.vm.get_hv_type() == "kvm": + add_dev("sata", virtinst.VirtualDisk.DEVICE_DISK, "SATA disk") + add_dev("virtio", virtinst.VirtualDisk.DEVICE_DISK, "Virtio disk") ++ add_dev("virtio", virtinst.VirtualDisk.DEVICE_LUN, ++ _("Virtio lun")) + add_dev("virtio-scsi", virtinst.VirtualDisk.DEVICE_DISK, + _("Virtio SCSI disk")) ++ add_dev("virtio-scsi", virtinst.VirtualDisk.DEVICE_LUN, ++ _("Virtio SCSI lun")) + if self.conn.is_xen(): + add_dev("xen", virtinst.VirtualDisk.DEVICE_DISK, "Virtual disk") + diff --git a/virtman-git-scsi.diff b/virtman-git-scsi.diff new file mode 100644 index 00000000..d0ae536b --- /dev/null +++ b/virtman-git-scsi.diff @@ -0,0 +1,103 @@ + +Subject: Add virtio-scsi disk bus option +From: ChenHanxiao chenhanxiao@cn.fujitsu.com Fri Dec 7 18:21:38 2012 +0800 +Date: Sun Dec 9 14:28:42 2012 -0500: +Git: ad1b24e885670d36b4ffd3a96434fd19dbe2ce98 + +This patch will add virtio-scsi bus option on "Add New Virtual +Hardware" GUI page. It will support users to add a virtual disk +using SCSI bus with a controller model virtio-scsi. +If there is no SCSI controller existed, a new SCSI controller by +model 'virtio-scsi' will be added automatically. + +Signed-off-by: ChenHanxiao + +(crobinso: add Chen to AUTHORS, some cosmetic tweaks) + +Index: virt-manager-0.9.4/AUTHORS +=================================================================== +--- virt-manager-0.9.4.orig/AUTHORS ++++ virt-manager-0.9.4/AUTHORS +@@ -81,6 +81,7 @@ Further patches have been submitted by: + Nathan Bird + Guannan Ren + Eduardo Elias Ferreira ++ ChenHanxiao + + <...send a patch & get your name here...> + +Index: virt-manager-0.9.4/src/virtManager/addhardware.py +=================================================================== +--- virt-manager-0.9.4.orig/src/virtManager/addhardware.py ++++ virt-manager-0.9.4/src/virtManager/addhardware.py +@@ -28,6 +28,7 @@ from virtinst import (VirtualCharDevice, + VirtualVideoDevice, VirtualWatchdog, + VirtualFilesystem, VirtualSmartCardDevice, + VirtualRedirDevice) ++from virtinst.VirtualController import VirtualControllerSCSI + + import virtManager.util as util + import virtManager.uihelpers as uihelpers +@@ -539,6 +540,8 @@ class vmmAddHardware(vmmGObjectUI): + if self.vm.get_hv_type() == "kvm": + add_dev("sata", virtinst.VirtualDisk.DEVICE_DISK, "SATA disk") + add_dev("virtio", virtinst.VirtualDisk.DEVICE_DISK, "Virtio disk") ++ add_dev("virtio-scsi", virtinst.VirtualDisk.DEVICE_DISK, ++ _("Virtio SCSI disk")) + if self.conn.is_xen(): + add_dev("xen", virtinst.VirtualDisk.DEVICE_DISK, "Virtual disk") + +@@ -1151,9 +1154,15 @@ class vmmAddHardware(vmmGObjectUI): + self._dev.get_xml_config() + logging.debug("Adding device:\n" + self._dev.get_xml_config()) + ++ controller = getattr(self._dev, "vmm_controller", None) ++ if controller is not None: ++ logging.debug("Adding controller:\n%s", ++ self._dev.vmm_controller.get_xml_config()) + # Hotplug device + attach_err = False + try: ++ if controller is not None: ++ self.vm.attach_device(self._dev.vmm_controller) + self.vm.attach_device(self._dev) + except Exception, e: + logging.debug("Device could not be hotplugged: %s", str(e)) +@@ -1176,6 +1185,8 @@ class vmmAddHardware(vmmGObjectUI): + + # Alter persistent config + try: ++ if controller is not None: ++ self.vm.add_device(self._dev.vmm_controller) + self.vm.add_device(self._dev) + except Exception, e: + self.err.show_err(_("Error adding device: %s" % str(e))) +@@ -1221,6 +1232,10 @@ class vmmAddHardware(vmmGObjectUI): + bus, device = self.get_config_disk_target() + cache = self.get_config_disk_cache() + fmt = self.get_config_disk_format() ++ controller_model = None ++ if bus == "virtio-scsi": ++ bus = "scsi" ++ controller_model = "virtio-scsi" + + # Make sure default pool is running + if self.is_default_storage(): +@@ -1315,6 +1330,17 @@ class vmmAddHardware(vmmGObjectUI): + uihelpers.check_path_search_for_qemu(self.topwin, + self.conn, disk.path) + ++ # Add a SCSI controller with model virtio-scsi if needed ++ disk.vmm_controller = None ++ if (controller_model == "virtio-scsi") and (bus == "scsi"): ++ controllers = self.vm.get_controller_devices() ++ controller = VirtualControllerSCSI(conn = self.conn.vmm) ++ controller.set_model(controller_model) ++ disk.vmm_controller = controller ++ for d in controllers: ++ if controller_model == d.model: ++ disk.vmm_controller = None ++ + self._dev = disk + return True + diff --git a/virtman-vminstall.diff b/virtman-vminstall.diff index 2667b114..e1b7c4a3 100644 --- a/virtman-vminstall.diff +++ b/virtman-vminstall.diff @@ -1,8 +1,16 @@ -Index: virt-manager-0.9.3/src/virtManager/engine.py +Index: virt-manager-0.9.4/src/virtManager/engine.py =================================================================== ---- virt-manager-0.9.3.orig/src/virtManager/engine.py -+++ virt-manager-0.9.3/src/virtManager/engine.py -@@ -42,7 +42,6 @@ from virtManager.manager import vmmManag +--- virt-manager-0.9.4.orig/src/virtManager/engine.py ++++ virt-manager-0.9.4/src/virtManager/engine.py +@@ -24,6 +24,7 @@ import gtk + import logging + import threading + import os ++import traceback + + import libvirt + import virtinst +@@ -42,7 +43,6 @@ from virtManager.manager import vmmManag from virtManager.migrate import vmmMigrateDialog from virtManager.details import vmmDetails from virtManager.asyncjob import vmmAsyncJob @@ -10,7 +18,7 @@ Index: virt-manager-0.9.3/src/virtManager/engine.py from virtManager.host import vmmHost from virtManager.error import vmmErrorDialog from virtManager.systray import vmmSystray -@@ -671,11 +670,47 @@ class vmmEngine(vmmGObject): +@@ -671,11 +671,47 @@ class vmmEngine(vmmGObject): self.windowCreate = obj return self.windowCreate @@ -62,10 +70,10 @@ Index: virt-manager-0.9.3/src/virtManager/engine.py def _do_show_migrate(self, src, uri, uuid): try: -Index: virt-manager-0.9.3/src/virtManager/create.py +Index: virt-manager-0.9.4/src/virtManager/create.py =================================================================== ---- virt-manager-0.9.3.orig/src/virtManager/create.py -+++ virt-manager-0.9.3/src/virtManager/create.py +--- virt-manager-0.9.4.orig/src/virtManager/create.py ++++ virt-manager-0.9.4/src/virtManager/create.py @@ -176,6 +176,7 @@ class vmmCreate(vmmGObjectUI): def close(self, ignore1=None, ignore2=None):