- 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
This commit is contained in:
Charles Arnold 2013-02-04 19:46:15 +00:00 committed by Git OBS Bridge
parent b24018f586
commit 9bd84112f9
7 changed files with 200 additions and 30 deletions

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -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)

33
virtman-git-scsi-lun.diff Normal file
View File

@ -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 <chenhanxiao@cn.fujitsu.com>
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")

103
virtman-git-scsi.diff Normal file
View File

@ -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 <chenhanxiao@cn.fujitsu.com>
(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 <nathan-at-acceleration-dot-net>
Guannan Ren <gren-at-redhat-dot-com>
Eduardo Elias Ferreira <edusf-at-linux-dot-vnet-dot-ibm-dot-com>
+ ChenHanxiao <chenhanxiao-at-cn-dot-fujitsu-dot-com>
<...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

View File

@ -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):