SHA256
1
0
forked from pool/libvirt

- Update to libvirt 0.9.11.4 stable release

OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=212
This commit is contained in:
James Fehlig 2012-06-20 00:00:14 +00:00 committed by Git OBS Bridge
parent 12b4dbbe29
commit 8d8243b548
16 changed files with 96 additions and 843 deletions

View File

@ -1,325 +0,0 @@
commit 05abd1507d66aabb6cad12eeafeb4c4d1911c585
Author: Guannan Ren <gren@redhat.com>
Date: Sun May 6 22:45:05 2012 +0800
qemu: call usb search function for hostdev initialization and hotplug
src/qemu/qemu_hostdev.c:
refactor qemuPrepareHostdevUSBDevices function, make it focus on
adding usb device to activeUsbHostdevs after check. After that,
the usb hotplug function qemuDomainAttachHostDevice also could use
it.
expand qemuPrepareHostUSBDevices to perform the usb search,
rollback on failure.
src/qemu/qemu_hotplug.c:
If there are multiple usb devices available with same vendorID and productID,
but with different value of "bus, device", we give an error to let user
use <address> to specify the desired one.
Index: libvirt-0.9.11.3/src/qemu/qemu_hostdev.c
===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu_hostdev.c
+++ libvirt-0.9.11.3/src/qemu/qemu_hostdev.c
@@ -565,13 +565,53 @@ qemuPrepareHostPCIDevices(struct qemud_d
int
qemuPrepareHostdevUSBDevices(struct qemud_driver *driver,
const char *name,
- virDomainHostdevDefPtr *hostdevs,
- int nhostdevs)
+ usbDeviceList *list)
{
- int ret = -1;
int i;
+ unsigned int count;
+ usbDevice *tmp;
+
+ count = usbDeviceListCount(list);
+
+ for (i = 0; i < count; i++) {
+ usbDevice *usb = usbDeviceListGet(list, i);
+ if ((tmp = usbDeviceListFind(driver->activeUsbHostdevs, usb))) {
+ const char *other_name = usbDeviceGetUsedBy(tmp);
+
+ if (other_name)
+ qemuReportError(VIR_ERR_OPERATION_INVALID,
+ _("USB device %s is in use by domain %s"),
+ usbDeviceGetName(tmp), other_name);
+ else
+ qemuReportError(VIR_ERR_OPERATION_INVALID,
+ _("USB device %s is already in use"),
+ usbDeviceGetName(tmp));
+ return -1;
+ }
+
+ usbDeviceSetUsedBy(usb, name);
+ VIR_DEBUG("Adding %03d.%03d dom=%s to activeUsbHostdevs",
+ usbDeviceGetBus(usb), usbDeviceGetDevno(usb), name);
+ /*
+ * The caller is responsible to steal these usb devices
+ * from the usbDeviceList that passed in on success,
+ * perform rollback on failure.
+ */
+ if (usbDeviceListAdd(driver->activeUsbHostdevs, usb) < 0)
+ return -1;
+ }
+ return 0;
+}
+
+static int
+qemuPrepareHostUSBDevices(struct qemud_driver *driver,
+ virDomainDefPtr def)
+{
+ int i, ret = -1;
usbDeviceList *list;
usbDevice *tmp;
+ virDomainHostdevDefPtr *hostdevs = def->hostdevs;
+ int nhostdevs = def->nhostdevs;
/* To prevent situation where USB device is assigned to two domains
* we need to keep a list of currently assigned USB devices.
@@ -586,70 +626,61 @@ qemuPrepareHostdevUSBDevices(struct qemu
*/
for (i = 0 ; i < nhostdevs ; i++) {
virDomainHostdevDefPtr hostdev = hostdevs[i];
+ usbDevice *usb = NULL;
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
continue;
if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB)
continue;
- /* Resolve a vendor/product to bus/device */
- if (hostdev->source.subsys.u.usb.vendor) {
- usbDevice *usb;
- usbDeviceList *devs;
+ unsigned vendor = hostdev->source.subsys.u.usb.vendor;
+ unsigned product = hostdev->source.subsys.u.usb.product;
+ unsigned bus = hostdev->source.subsys.u.usb.bus;
+ unsigned device = hostdev->source.subsys.u.usb.device;
- devs = usbFindDeviceByVendor(hostdev->source.subsys.u.usb.vendor,
- hostdev->source.subsys.u.usb.product);
+ if (vendor && bus) {
+ usb = usbFindDevice(vendor, product, bus, device);
+ } else if (vendor && !bus) {
+ usbDeviceList *devs = usbFindDeviceByVendor(vendor, product);
if (!devs)
goto cleanup;
+ if (usbDeviceListCount(devs) > 1) {
+ qemuReportError(VIR_ERR_OPERATION_FAILED,
+ _("multiple USB devices for %x:%x, "
+ "use <address> to specify one"), vendor, product);
+ usbDeviceListFree(devs);
+ goto cleanup;
+ }
usb = usbDeviceListGet(devs, 0);
usbDeviceListSteal(devs, usb);
usbDeviceListFree(devs);
- if ((tmp = usbDeviceListFind(driver->activeUsbHostdevs, usb))) {
- const char *other_name = usbDeviceGetUsedBy(tmp);
-
- if (other_name)
- qemuReportError(VIR_ERR_OPERATION_INVALID,
- _("USB device %s is in use by domain %s"),
- usbDeviceGetName(tmp), other_name);
- else
- qemuReportError(VIR_ERR_OPERATION_INVALID,
- _("USB device %s is already in use"),
- usbDeviceGetName(tmp));
- usbFreeDevice(usb);
- goto cleanup;
- }
-
hostdev->source.subsys.u.usb.bus = usbDeviceGetBus(usb);
hostdev->source.subsys.u.usb.device = usbDeviceGetDevno(usb);
- if (usbDeviceListAdd(list, usb) < 0) {
- usbFreeDevice(usb);
- goto cleanup;
- }
+ } else if (!vendor && bus) {
+ usb = usbFindDeviceByBus(bus, device);
+ }
+
+ if (!usb)
+ goto cleanup;
+ if (usbDeviceListAdd(list, usb) < 0) {
+ usbFreeDevice(usb);
+ goto cleanup;
}
}
- /* Loop 2: Mark devices in temporary list as used by @name
+ /* Mark devices in temporary list as used by @name
* and add them do driver list. However, if something goes
* wrong, perform rollback.
*/
- for (i = 0; i < usbDeviceListCount(list); i++) {
- tmp = usbDeviceListGet(list, i);
- usbDeviceSetUsedBy(tmp, name);
+ if (qemuPrepareHostdevUSBDevices(driver, def->name, list) < 0)
+ goto inactivedevs;
- VIR_DEBUG("Adding %03d.%03d dom=%s to activeUsbHostdevs",
- usbDeviceGetBus(tmp), usbDeviceGetDevno(tmp), name);
- if (usbDeviceListAdd(driver->activeUsbHostdevs, tmp) < 0) {
- usbFreeDevice(tmp);
- goto inactivedevs;
- }
- }
-
- /* Loop 3: Temporary list was successfully merged with
+ /* Loop 2: Temporary list was successfully merged with
* driver list, so steal all items to avoid freeing them
* in cleanup label.
*/
@@ -675,13 +706,6 @@ cleanup:
return ret;
}
-static int
-qemuPrepareHostUSBDevices(struct qemud_driver *driver,
- virDomainDefPtr def)
-{
- return qemuPrepareHostdevUSBDevices(driver, def->name, def->hostdevs, def->nhostdevs);
-}
-
int qemuPrepareHostDevices(struct qemud_driver *driver,
virDomainDefPtr def)
{
Index: libvirt-0.9.11.3/src/qemu/qemu_hostdev.h
===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu_hostdev.h
+++ libvirt-0.9.11.3/src/qemu/qemu_hostdev.h
@@ -38,8 +38,7 @@ int qemuPrepareHostdevPCIDevices(struct
int nhostdevs);
int qemuPrepareHostdevUSBDevices(struct qemud_driver *driver,
const char *name,
- virDomainHostdevDefPtr *hostdevs,
- int nhostdevs);
+ usbDeviceList *list);
int qemuPrepareHostDevices(struct qemud_driver *driver,
virDomainDefPtr def);
void qemuReattachPciDevice(pciDevice *dev, struct qemud_driver *driver);
Index: libvirt-0.9.11.3/src/qemu/qemu_hotplug.c
===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu_hotplug.c
+++ libvirt-0.9.11.3/src/qemu/qemu_hotplug.c
@@ -1116,11 +1116,13 @@ error:
return -1;
}
-
int qemuDomainAttachHostDevice(struct qemud_driver *driver,
virDomainObjPtr vm,
virDomainHostdevDefPtr hostdev)
{
+ usbDeviceList *list;
+ usbDevice *usb = NULL;
+
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("hostdev mode '%s' not supported"),
@@ -1128,35 +1130,58 @@ int qemuDomainAttachHostDevice(struct qe
return -1;
}
- /* Resolve USB product/vendor to bus/device */
- if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB &&
- hostdev->source.subsys.u.usb.vendor) {
- usbDevice *usb;
- usbDeviceList *list;
-
- if (qemuPrepareHostdevUSBDevices(driver, vm->def->name, &hostdev, 1) < 0)
- goto error;
+ if (!(list = usbDeviceListNew()))
+ goto cleanup;
- list = usbFindDeviceByVendor(hostdev->source.subsys.u.usb.vendor,
- hostdev->source.subsys.u.usb.product);
+ if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
+ unsigned vendor = hostdev->source.subsys.u.usb.vendor;
+ unsigned product = hostdev->source.subsys.u.usb.product;
+ unsigned bus = hostdev->source.subsys.u.usb.bus;
+ unsigned device = hostdev->source.subsys.u.usb.device;
+
+ if (vendor && bus) {
+ usb = usbFindDevice(vendor, product, bus, device);
+
+ } else if (vendor && !bus) {
+ usbDeviceList *devs = usbFindDeviceByVendor(vendor, product);
+ if (!devs)
+ goto cleanup;
+
+ if (usbDeviceListCount(devs) > 1) {
+ qemuReportError(VIR_ERR_OPERATION_FAILED,
+ _("multiple USB devices for %x:%x, "
+ "use <address> to specify one"), vendor, product);
+ usbDeviceListFree(devs);
+ goto cleanup;
+ }
+ usb = usbDeviceListGet(devs, 0);
+ usbDeviceListSteal(devs, usb);
+ usbDeviceListFree(devs);
+
+ hostdev->source.subsys.u.usb.bus = usbDeviceGetBus(usb);
+ hostdev->source.subsys.u.usb.device = usbDeviceGetDevno(usb);
+
+ } else if (!vendor && bus) {
+ usb = usbFindDeviceByBus(bus, device);
+ }
+
+ if (!usb)
+ goto cleanup;
+
+ if (usbDeviceListAdd(list, usb) < 0) {
+ usbFreeDevice(usb);
+ goto cleanup;
+ }
- if (!list)
- return -1;
+ if (qemuPrepareHostdevUSBDevices(driver, vm->def->name, list) < 0)
+ goto cleanup;
- usb = usbDeviceListGet(list, 0);
usbDeviceListSteal(list, usb);
- usbDeviceListFree(list);
-
- hostdev->source.subsys.u.usb.bus = usbDeviceGetBus(usb);
- hostdev->source.subsys.u.usb.device = usbDeviceGetDevno(usb);
-
- usbFreeDevice(usb);
}
-
if (virSecurityManagerSetHostdevLabel(driver->securityManager,
vm->def, hostdev) < 0)
- return -1;
+ goto cleanup;
switch (hostdev->source.subsys.type) {
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
@@ -1178,6 +1203,7 @@ int qemuDomainAttachHostDevice(struct qe
goto error;
}
+ usbDeviceListFree(list);
return 0;
error:
@@ -1185,6 +1211,9 @@ error:
vm->def, hostdev) < 0)
VIR_WARN("Unable to restore host device labelling on hotplug fail");
+cleanup:
+ usbDeviceListFree(list);
+ usbDeviceListSteal(driver->activeUsbHostdevs, usb);
return -1;
}

View File

@ -1,423 +0,0 @@
commit 9914477efc9764f691ca50faca6592a2d4fecec8
Author: Guannan Ren <gren@redhat.com>
Date: Fri May 4 15:49:58 2012 +0800
usb: create functions to search usb device accurately
usbFindDevice():get usb device according to
idVendor, idProduct, bus, device
it is the exact match of the four parameters
usbFindDeviceByBus():get usb device according to bus, device
it returns only one usb device same as usbFindDevice
usbFindDeviceByVendor():get usb device according to idVendor,idProduct
it probably returns multiple usb devices.
usbDeviceSearch(): a helper function to do the actual search
Index: libvirt-0.9.11.3/src/libvirt_private.syms
===================================================================
--- libvirt-0.9.11.3.orig/src/libvirt_private.syms
+++ libvirt-0.9.11.3/src/libvirt_private.syms
@@ -1084,6 +1084,8 @@ usbDeviceListNew;
usbDeviceListSteal;
usbDeviceSetUsedBy;
usbFindDevice;
+usbFindDeviceByBus;
+usbFindDeviceByVendor;
usbFreeDevice;
usbGetDevice;
Index: libvirt-0.9.11.3/src/qemu/qemu_hostdev.c
===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu_hostdev.c
+++ libvirt-0.9.11.3/src/qemu/qemu_hostdev.c
@@ -594,13 +594,19 @@ qemuPrepareHostdevUSBDevices(struct qemu
/* Resolve a vendor/product to bus/device */
if (hostdev->source.subsys.u.usb.vendor) {
- usbDevice *usb
- = usbFindDevice(hostdev->source.subsys.u.usb.vendor,
- hostdev->source.subsys.u.usb.product);
+ usbDevice *usb;
+ usbDeviceList *devs;
- if (!usb)
+ devs = usbFindDeviceByVendor(hostdev->source.subsys.u.usb.vendor,
+ hostdev->source.subsys.u.usb.product);
+
+ if (!devs)
goto cleanup;
+ usb = usbDeviceListGet(devs, 0);
+ usbDeviceListSteal(devs, usb);
+ usbDeviceListFree(devs);
+
if ((tmp = usbDeviceListFind(driver->activeUsbHostdevs, usb))) {
const char *other_name = usbDeviceGetUsedBy(tmp);
Index: libvirt-0.9.11.3/src/qemu/qemu_hotplug.c
===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu_hotplug.c
+++ libvirt-0.9.11.3/src/qemu/qemu_hotplug.c
@@ -1131,16 +1131,22 @@ int qemuDomainAttachHostDevice(struct qe
/* Resolve USB product/vendor to bus/device */
if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB &&
hostdev->source.subsys.u.usb.vendor) {
+ usbDevice *usb;
+ usbDeviceList *list;
+
if (qemuPrepareHostdevUSBDevices(driver, vm->def->name, &hostdev, 1) < 0)
goto error;
- usbDevice *usb
- = usbFindDevice(hostdev->source.subsys.u.usb.vendor,
- hostdev->source.subsys.u.usb.product);
+ list = usbFindDeviceByVendor(hostdev->source.subsys.u.usb.vendor,
+ hostdev->source.subsys.u.usb.product);
- if (!usb)
+ if (!list)
return -1;
+ usb = usbDeviceListGet(list, 0);
+ usbDeviceListSteal(list, usb);
+ usbDeviceListFree(list);
+
hostdev->source.subsys.u.usb.bus = usbDeviceGetBus(usb);
hostdev->source.subsys.u.usb.device = usbDeviceGetDevno(usb);
Index: libvirt-0.9.11.3/src/util/hostusb.c
===================================================================
--- libvirt-0.9.11.3.orig/src/util/hostusb.c
+++ libvirt-0.9.11.3/src/util/hostusb.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009-2011 Red Hat, Inc.
+ * Copyright (C) 2009-2012 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -42,9 +42,16 @@
#define USB_ID_LEN 10 /* "1234 5678" */
#define USB_ADDR_LEN 8 /* "123:456" */
+/* For virReportOOMError() and virReportSystemError() */
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+#define usbReportError(code, ...) \
+ virReportErrorHelper(VIR_FROM_NONE, code, __FILE__, \
+ __FUNCTION__, __LINE__, __VA_ARGS__)
+
struct _usbDevice {
- unsigned bus;
- unsigned dev;
+ unsigned int bus;
+ unsigned int dev;
char name[USB_ADDR_LEN]; /* domain:bus:slot.function */
char id[USB_ID_LEN]; /* product vendor */
@@ -57,15 +64,14 @@ struct _usbDeviceList {
usbDevice **devs;
};
-/* For virReportOOMError() and virReportSystemError() */
-#define VIR_FROM_THIS VIR_FROM_NONE
-
-#define usbReportError(code, ...) \
- virReportErrorHelper(VIR_FROM_NONE, code, __FILE__, \
- __FUNCTION__, __LINE__, __VA_ARGS__)
+typedef enum {
+ USB_DEVICE_ALL = 0,
+ USB_DEVICE_FIND_BY_VENDOR = 1 << 0,
+ USB_DEVICE_FIND_BY_BUS = 1 << 1,
+} usbDeviceFindFlags;
static int usbSysReadFile(const char *f_name, const char *d_name,
- int base, unsigned *value)
+ int base, unsigned int *value)
{
int ret = -1, tmp;
char *buf = NULL;
@@ -94,13 +100,22 @@ cleanup:
return ret;
}
-static int usbFindBusByVendor(unsigned vendor, unsigned product,
- unsigned *bus, unsigned *devno)
+static usbDeviceList *
+usbDeviceSearch(unsigned int vendor,
+ unsigned int product,
+ unsigned int bus,
+ unsigned int devno,
+ unsigned int flags)
{
DIR *dir = NULL;
- int ret = -1, found = 0;
+ bool found = false;
char *ignore = NULL;
struct dirent *de;
+ usbDeviceList *list = NULL, *ret = NULL;
+ usbDevice *usb;
+
+ if (!(list = usbDeviceListNew()))
+ goto cleanup;
dir = opendir(USB_SYSFS "/devices");
if (!dir) {
@@ -111,61 +126,145 @@ static int usbFindBusByVendor(unsigned v
}
while ((de = readdir(dir))) {
- unsigned found_prod, found_vend;
+ unsigned int found_prod, found_vend, found_bus, found_devno;
+ char *tmpstr = de->d_name;
+
if (de->d_name[0] == '.' || strchr(de->d_name, ':'))
continue;
if (usbSysReadFile("idVendor", de->d_name,
16, &found_vend) < 0)
goto cleanup;
+
if (usbSysReadFile("idProduct", de->d_name,
16, &found_prod) < 0)
goto cleanup;
- if (found_prod == product && found_vend == vendor) {
- /* Lookup bus.addr info */
- char *tmpstr = de->d_name;
- unsigned found_bus, found_addr;
-
- if (STRPREFIX(de->d_name, "usb"))
- tmpstr += 3;
-
- if (virStrToLong_ui(tmpstr, &ignore, 10, &found_bus) < 0) {
- usbReportError(VIR_ERR_INTERNAL_ERROR,
- _("Failed to parse dir name '%s'"),
- de->d_name);
- goto cleanup;
- }
-
- if (usbSysReadFile("devnum", de->d_name,
- 10, &found_addr) < 0)
- goto cleanup;
-
- *bus = found_bus;
- *devno = found_addr;
- found = 1;
- break;
+ if (STRPREFIX(de->d_name, "usb"))
+ tmpstr += 3;
+
+ if (virStrToLong_ui(tmpstr, &ignore, 10, &found_bus) < 0) {
+ usbReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Failed to parse dir name '%s'"),
+ de->d_name);
+ goto cleanup;
}
- }
- if (!found)
- usbReportError(VIR_ERR_INTERNAL_ERROR,
- _("Did not find USB device %x:%x"), vendor, product);
- else
- ret = 0;
+ if (usbSysReadFile("devnum", de->d_name,
+ 10, &found_devno) < 0)
+ goto cleanup;
+
+ if ((flags & USB_DEVICE_FIND_BY_VENDOR) &&
+ (found_prod != product || found_vend != vendor))
+ continue;
+
+ if (flags & USB_DEVICE_FIND_BY_BUS) {
+ if (found_bus != bus || found_devno != devno)
+ continue;
+ found = true;
+ }
+
+ usb = usbGetDevice(found_bus, found_devno);
+ if (!usb)
+ goto cleanup;
+
+ if (usbDeviceListAdd(list, usb) < 0) {
+ usbFreeDevice(usb);
+ goto cleanup;
+ }
+
+ if (found)
+ break;
+ }
+ ret = list;
cleanup:
if (dir) {
int saved_errno = errno;
- closedir (dir);
+ closedir(dir);
errno = saved_errno;
}
+
+ if (!ret)
+ usbDeviceListFree(list);
return ret;
}
+usbDeviceList *
+usbFindDeviceByVendor(unsigned int vendor, unsigned product)
+{
+
+ usbDeviceList *list;
+ if (!(list = usbDeviceSearch(vendor, product, 0 , 0,
+ USB_DEVICE_FIND_BY_VENDOR)))
+ return NULL;
+
+ if (list->count == 0) {
+ usbReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Did not find USB device %x:%x"), vendor, product);
+ usbDeviceListFree(list);
+ return NULL;
+ }
+
+ return list;
+}
+
usbDevice *
-usbGetDevice(unsigned bus,
- unsigned devno)
+usbFindDeviceByBus(unsigned int bus, unsigned devno)
+{
+ usbDevice *usb;
+ usbDeviceList *list;
+
+ if (!(list = usbDeviceSearch(0, 0, bus, devno,
+ USB_DEVICE_FIND_BY_BUS)))
+ return NULL;
+
+ if (list->count == 0) {
+ usbReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Did not find USB device bus:%u device:%u"),
+ bus, devno);
+ usbDeviceListFree(list);
+ return NULL;
+ }
+
+ usb = usbDeviceListGet(list, 0);
+ usbDeviceListSteal(list, usb);
+ usbDeviceListFree(list);
+
+ return usb;
+}
+
+usbDevice *
+usbFindDevice(unsigned int vendor,
+ unsigned int product,
+ unsigned int bus,
+ unsigned int devno)
+{
+ usbDevice *usb;
+ usbDeviceList *list;
+
+ unsigned int flags = USB_DEVICE_FIND_BY_VENDOR|USB_DEVICE_FIND_BY_BUS;
+ if (!(list = usbDeviceSearch(vendor, product, bus, devno, flags)))
+ return NULL;
+
+ if (list->count == 0) {
+ usbReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Did not find USB device %x:%x bus:%u device:%u"),
+ vendor, product, bus, devno);
+ usbDeviceListFree(list);
+ return NULL;
+ }
+
+ usb = usbDeviceListGet(list, 0);
+ usbDeviceListSteal(list, usb);
+ usbDeviceListFree(list);
+
+ return usb;
+}
+
+usbDevice *
+usbGetDevice(unsigned int bus,
+ unsigned int devno)
{
usbDevice *dev;
@@ -207,21 +306,6 @@ usbGetDevice(unsigned bus,
return dev;
}
-
-usbDevice *
-usbFindDevice(unsigned vendor,
- unsigned product)
-{
- unsigned bus = 0, devno = 0;
-
- if (usbFindBusByVendor(vendor, product, &bus, &devno) < 0) {
- return NULL;
- }
-
- return usbGetDevice(bus, devno);
-}
-
-
void
usbFreeDevice(usbDevice *dev)
{
@@ -247,13 +331,13 @@ const char *usbDeviceGetName(usbDevice *
return dev->name;
}
-unsigned usbDeviceGetBus(usbDevice *dev)
+unsigned int usbDeviceGetBus(usbDevice *dev)
{
return dev->bus;
}
-unsigned usbDeviceGetDevno(usbDevice *dev)
+unsigned int usbDeviceGetDevno(usbDevice *dev)
{
return dev->dev;
}
Index: libvirt-0.9.11.3/src/util/hostusb.h
===================================================================
--- libvirt-0.9.11.3.orig/src/util/hostusb.h
+++ libvirt-0.9.11.3/src/util/hostusb.h
@@ -28,17 +28,27 @@
typedef struct _usbDevice usbDevice;
typedef struct _usbDeviceList usbDeviceList;
-usbDevice *usbGetDevice(unsigned bus,
- unsigned devno);
-usbDevice *usbFindDevice(unsigned vendor,
- unsigned product);
+usbDevice *usbGetDevice(unsigned int bus,
+ unsigned int devno);
+
+usbDevice *usbFindDeviceByBus(unsigned int bus,
+ unsigned int devno);
+
+usbDeviceList *usbFindDeviceByVendor(unsigned int vendor,
+ unsigned int product);
+
+usbDevice *usbFindDevice(unsigned int vendor,
+ unsigned int product,
+ unsigned int bus,
+ unsigned int devno);
+
void usbFreeDevice (usbDevice *dev);
void usbDeviceSetUsedBy(usbDevice *dev, const char *name);
const char *usbDeviceGetUsedBy(usbDevice *dev);
const char *usbDeviceGetName(usbDevice *dev);
-unsigned usbDeviceGetBus(usbDevice *dev);
-unsigned usbDeviceGetDevno(usbDevice *dev);
+unsigned int usbDeviceGetBus(usbDevice *dev);
+unsigned int usbDeviceGetDevno(usbDevice *dev);
/*
* Callback that will be invoked once for each file

View File

@ -1,7 +1,7 @@
Index: libvirt-0.9.11.3/src/util/virnetdev.c Index: libvirt-0.9.11.4/src/util/virnetdev.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/util/virnetdev.c --- libvirt-0.9.11.4.orig/src/util/virnetdev.c
+++ libvirt-0.9.11.3/src/util/virnetdev.c +++ libvirt-0.9.11.4/src/util/virnetdev.c
@@ -85,7 +85,7 @@ static int virNetDevSetupControlFull(con @@ -85,7 +85,7 @@ static int virNetDevSetupControlFull(con
static int virNetDevSetupControl(const char *ifname, static int virNetDevSetupControl(const char *ifname,
struct ifreq *ifr) struct ifreq *ifr)
@ -11,10 +11,10 @@ Index: libvirt-0.9.11.3/src/util/virnetdev.c
} }
#endif #endif
Index: libvirt-0.9.11.3/src/util/virnetdevbridge.c Index: libvirt-0.9.11.4/src/util/virnetdevbridge.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/util/virnetdevbridge.c --- libvirt-0.9.11.4.orig/src/util/virnetdevbridge.c
+++ libvirt-0.9.11.3/src/util/virnetdevbridge.c +++ libvirt-0.9.11.4/src/util/virnetdevbridge.c
@@ -84,7 +84,7 @@ static int virNetDevSetupControlFull(con @@ -84,7 +84,7 @@ static int virNetDevSetupControlFull(con
static int virNetDevSetupControl(const char *ifname, static int virNetDevSetupControl(const char *ifname,
struct ifreq *ifr) struct ifreq *ifr)

View File

@ -2,7 +2,7 @@ Index: src/lxc/lxc_container.c
=================================================================== ===================================================================
--- src/lxc/lxc_container.c.orig --- src/lxc/lxc_container.c.orig
+++ src/lxc/lxc_container.c +++ src/lxc/lxc_container.c
@@ -1453,6 +1453,9 @@ int lxcContainerStart(virDomainDefPtr de @@ -1454,6 +1454,9 @@ int lxcContainerStart(virDomainDefPtr de
ttyPaths, nttyPaths, handshakefd}; ttyPaths, nttyPaths, handshakefd};
/* allocate a stack for the container */ /* allocate a stack for the container */
@ -12,7 +12,7 @@ Index: src/lxc/lxc_container.c
if (VIR_ALLOC_N(stack, stacksize) < 0) { if (VIR_ALLOC_N(stack, stacksize) < 0) {
virReportOOMError(); virReportOOMError();
return -1; return -1;
@@ -1472,7 +1475,11 @@ int lxcContainerStart(virDomainDefPtr de @@ -1473,7 +1476,11 @@ int lxcContainerStart(virDomainDefPtr de
cflags |= CLONE_NEWNET; cflags |= CLONE_NEWNET;
} }
@ -24,7 +24,7 @@ Index: src/lxc/lxc_container.c
VIR_FREE(stack); VIR_FREE(stack);
VIR_DEBUG("clone() completed, new container PID is %d", pid); VIR_DEBUG("clone() completed, new container PID is %d", pid);
@@ -1498,6 +1505,7 @@ int lxcContainerAvailable(int features) @@ -1499,6 +1506,7 @@ int lxcContainerAvailable(int features)
int cpid; int cpid;
char *childStack; char *childStack;
char *stack; char *stack;
@ -32,7 +32,7 @@ Index: src/lxc/lxc_container.c
if (features & LXC_CONTAINER_FEATURE_USER) if (features & LXC_CONTAINER_FEATURE_USER)
flags |= CLONE_NEWUSER; flags |= CLONE_NEWUSER;
@@ -1505,14 +1513,21 @@ int lxcContainerAvailable(int features) @@ -1506,14 +1514,21 @@ int lxcContainerAvailable(int features)
if (features & LXC_CONTAINER_FEATURE_NET) if (features & LXC_CONTAINER_FEATURE_NET)
flags |= CLONE_NEWNET; flags |= CLONE_NEWNET;

View File

@ -1,7 +1,7 @@
Index: libvirt-0.9.11.3/examples/apparmor/Makefile.am Index: libvirt-0.9.11.4/examples/apparmor/Makefile.am
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/examples/apparmor/Makefile.am --- libvirt-0.9.11.4.orig/examples/apparmor/Makefile.am
+++ libvirt-0.9.11.3/examples/apparmor/Makefile.am +++ libvirt-0.9.11.4/examples/apparmor/Makefile.am
@@ -1,8 +1,39 @@ @@ -1,8 +1,39 @@
## Copyright (C) 2005-2011 Red Hat, Inc. ## Copyright (C) 2005-2011 Red Hat, Inc.
## See COPYING.LIB for the License of this software ## See COPYING.LIB for the License of this software
@ -47,10 +47,10 @@ Index: libvirt-0.9.11.3/examples/apparmor/Makefile.am
+ rm -f $(DESTDIR)$(sysconfdir)/apparmor.d/libvirt/TEMPLATE + rm -f $(DESTDIR)$(sysconfdir)/apparmor.d/libvirt/TEMPLATE
+ +
+endif +endif
Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in Index: libvirt-0.9.11.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in +++ libvirt-0.9.11.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
@@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
+# Last Modified: Fri Aug 19 11:21:48 2011 +# Last Modified: Fri Aug 19 11:21:48 2011
+#include <tunables/global> +#include <tunables/global>
@ -92,9 +92,9 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
+ /var/lib/kvm/images/ r, + /var/lib/kvm/images/ r,
+ /var/lib/kvm/images/** r, + /var/lib/kvm/images/** r,
+} +}
Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper Index: libvirt-0.9.11.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper --- libvirt-0.9.11.4.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper
+++ /dev/null +++ /dev/null
@@ -1,38 +0,0 @@ @@ -1,38 +0,0 @@
-# Last Modified: Mon Apr 5 15:10:27 2010 -# Last Modified: Mon Apr 5 15:10:27 2010
@ -135,9 +135,9 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper
- /var/lib/libvirt/images/ r, - /var/lib/libvirt/images/ r,
- /var/lib/libvirt/images/** r, - /var/lib/libvirt/images/** r,
-} -}
Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd Index: libvirt-0.9.11.4/examples/apparmor/usr.sbin.libvirtd
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/examples/apparmor/usr.sbin.libvirtd --- libvirt-0.9.11.4.orig/examples/apparmor/usr.sbin.libvirtd
+++ /dev/null +++ /dev/null
@@ -1,52 +0,0 @@ @@ -1,52 +0,0 @@
-# Last Modified: Mon Apr 5 15:03:58 2010 -# Last Modified: Mon Apr 5 15:03:58 2010
@ -192,10 +192,10 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd
- change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*, - change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*,
- -
-} -}
Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd.in Index: libvirt-0.9.11.4/examples/apparmor/usr.sbin.libvirtd.in
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd.in +++ libvirt-0.9.11.4/examples/apparmor/usr.sbin.libvirtd.in
@@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
+# Last Modified: Fri Aug 19 11:20:36 2011 +# Last Modified: Fri Aug 19 11:20:36 2011
+#include <tunables/global> +#include <tunables/global>
@ -255,10 +255,10 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd.in
+ change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*, + change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*,
+ +
+} +}
Index: libvirt-0.9.11.3/examples/apparmor/libvirt-qemu Index: libvirt-0.9.11.4/examples/apparmor/libvirt-qemu
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/examples/apparmor/libvirt-qemu --- libvirt-0.9.11.4.orig/examples/apparmor/libvirt-qemu
+++ libvirt-0.9.11.3/examples/apparmor/libvirt-qemu +++ libvirt-0.9.11.4/examples/apparmor/libvirt-qemu
@@ -52,6 +52,7 @@ @@ -52,6 +52,7 @@
# access to firmware's etc # access to firmware's etc
/usr/share/kvm/** r, /usr/share/kvm/** r,

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f9a4fd33ee9e88b0dc1431799b583feba0539e224db87e1c4b2c44ddae52afa
size 13800939

3
libvirt-0.9.11.4.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ba68c591b0a500188170fefc43d0dbec02f4527aeed18c5b2ebbdc5ca91bca56
size 13792390

View File

@ -1,7 +1,7 @@
Index: libvirt-0.9.11.3/configure.ac Index: libvirt-0.9.11.4/configure.ac
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/configure.ac --- libvirt-0.9.11.4.orig/configure.ac
+++ libvirt-0.9.11.3/configure.ac +++ libvirt-0.9.11.4/configure.ac
@@ -63,6 +63,7 @@ AVAHI_REQUIRED="0.6.0" @@ -63,6 +63,7 @@ AVAHI_REQUIRED="0.6.0"
POLKIT_REQUIRED="0.6" POLKIT_REQUIRED="0.6"
PARTED_REQUIRED="1.8.0" PARTED_REQUIRED="1.8.0"
@ -10,7 +10,7 @@ Index: libvirt-0.9.11.3/configure.ac
UDEV_REQUIRED=145 UDEV_REQUIRED=145
PCIACCESS_REQUIRED=0.10.0 PCIACCESS_REQUIRED=0.10.0
XMLRPC_REQUIRED=1.14.0 XMLRPC_REQUIRED=1.14.0
@@ -1741,6 +1742,38 @@ AM_CONDITIONAL([WITH_NETCF], [test "$wit @@ -1756,6 +1757,38 @@ AM_CONDITIONAL([WITH_NETCF], [test "$wit
AC_SUBST([NETCF_CFLAGS]) AC_SUBST([NETCF_CFLAGS])
AC_SUBST([NETCF_LIBS]) AC_SUBST([NETCF_LIBS])
@ -49,7 +49,7 @@ Index: libvirt-0.9.11.3/configure.ac
AC_ARG_WITH([secrets], AC_ARG_WITH([secrets],
AC_HELP_STRING([--with-secrets], [with local secrets management driver @<:@default=yes@:>@]),[],[with_secrets=yes]) AC_HELP_STRING([--with-secrets], [with local secrets management driver @<:@default=yes@:>@]),[],[with_secrets=yes])
@@ -2686,6 +2719,7 @@ AC_MSG_NOTICE([ Remote: $with_remote]) @@ -2701,6 +2734,7 @@ AC_MSG_NOTICE([ Remote: $with_remote])
AC_MSG_NOTICE([ Network: $with_network]) AC_MSG_NOTICE([ Network: $with_network])
AC_MSG_NOTICE([Libvirtd: $with_libvirtd]) AC_MSG_NOTICE([Libvirtd: $with_libvirtd])
AC_MSG_NOTICE([ netcf: $with_netcf]) AC_MSG_NOTICE([ netcf: $with_netcf])
@ -57,7 +57,7 @@ Index: libvirt-0.9.11.3/configure.ac
AC_MSG_NOTICE([ macvtap: $with_macvtap]) AC_MSG_NOTICE([ macvtap: $with_macvtap])
AC_MSG_NOTICE([virtport: $with_virtualport]) AC_MSG_NOTICE([virtport: $with_virtualport])
AC_MSG_NOTICE([]) AC_MSG_NOTICE([])
@@ -2817,6 +2851,11 @@ AC_MSG_NOTICE([ netcf: $NETCF_CFLAGS $ @@ -2832,6 +2866,11 @@ AC_MSG_NOTICE([ netcf: $NETCF_CFLAGS $
else else
AC_MSG_NOTICE([ netcf: no]) AC_MSG_NOTICE([ netcf: no])
fi fi
@ -69,10 +69,10 @@ Index: libvirt-0.9.11.3/configure.ac
if test "$with_qemu" = "yes" && test "$LIBPCAP_FOUND" != "no"; then if test "$with_qemu" = "yes" && test "$LIBPCAP_FOUND" != "no"; then
AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS]) AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS])
else else
Index: libvirt-0.9.11.3/daemon/Makefile.am Index: libvirt-0.9.11.4/daemon/Makefile.am
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/daemon/Makefile.am --- libvirt-0.9.11.4.orig/daemon/Makefile.am
+++ libvirt-0.9.11.3/daemon/Makefile.am +++ libvirt-0.9.11.4/daemon/Makefile.am
@@ -143,6 +143,10 @@ endif @@ -143,6 +143,10 @@ endif
if WITH_NETCF if WITH_NETCF
@ -84,10 +84,10 @@ Index: libvirt-0.9.11.3/daemon/Makefile.am
endif endif
if WITH_NODE_DEVICES if WITH_NODE_DEVICES
Index: libvirt-0.9.11.3/daemon/libvirtd.c Index: libvirt-0.9.11.4/daemon/libvirtd.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/daemon/libvirtd.c --- libvirt-0.9.11.4.orig/daemon/libvirtd.c
+++ libvirt-0.9.11.3/daemon/libvirtd.c +++ libvirt-0.9.11.4/daemon/libvirtd.c
@@ -76,6 +76,10 @@ @@ -76,6 +76,10 @@
# endif # endif
# ifdef WITH_NETCF # ifdef WITH_NETCF
@ -110,11 +110,11 @@ Index: libvirt-0.9.11.3/daemon/libvirtd.c
# endif # endif
# ifdef WITH_STORAGE_DIR # ifdef WITH_STORAGE_DIR
storageRegister(); storageRegister();
Index: libvirt-0.9.11.3/src/Makefile.am Index: libvirt-0.9.11.4/src/Makefile.am
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/Makefile.am --- libvirt-0.9.11.4.orig/src/Makefile.am
+++ libvirt-0.9.11.3/src/Makefile.am +++ libvirt-0.9.11.4/src/Makefile.am
@@ -967,6 +967,24 @@ libvirt_driver_interface_la_LIBADD += .. @@ -970,6 +970,24 @@ libvirt_driver_interface_la_LIBADD += ..
libvirt_driver_interface_la_LDFLAGS += -module -avoid-version libvirt_driver_interface_la_LDFLAGS += -module -avoid-version
endif endif
libvirt_driver_interface_la_SOURCES = $(INTERFACE_DRIVER_SOURCES) libvirt_driver_interface_la_SOURCES = $(INTERFACE_DRIVER_SOURCES)
@ -139,10 +139,10 @@ Index: libvirt-0.9.11.3/src/Makefile.am
endif endif
if WITH_SECRETS if WITH_SECRETS
Index: libvirt-0.9.11.3/src/interface/netcf_driver.c Index: libvirt-0.9.11.4/src/interface/netcf_driver.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/interface/netcf_driver.c --- libvirt-0.9.11.4.orig/src/interface/netcf_driver.c
+++ libvirt-0.9.11.3/src/interface/netcf_driver.c +++ libvirt-0.9.11.4/src/interface/netcf_driver.c
@@ -23,7 +23,13 @@ @@ -23,7 +23,13 @@
#include <config.h> #include <config.h>
@ -208,11 +208,11 @@ Index: libvirt-0.9.11.3/src/interface/netcf_driver.c
/* open netcf */ /* open netcf */
if (ncf_init(&driverState->netcf, NULL) != 0) if (ncf_init(&driverState->netcf, NULL) != 0)
{ {
Index: libvirt-0.9.11.3/tools/virsh.c Index: libvirt-0.9.11.4/tools/virsh.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/tools/virsh.c --- libvirt-0.9.11.4.orig/tools/virsh.c
+++ libvirt-0.9.11.3/tools/virsh.c +++ libvirt-0.9.11.4/tools/virsh.c
@@ -19821,6 +19821,10 @@ vshShowVersion(vshControl *ctl ATTRIBUTE @@ -19827,6 +19827,10 @@ vshShowVersion(vshControl *ctl ATTRIBUTE
#endif #endif
#ifdef WITH_NETCF #ifdef WITH_NETCF
vshPrint(ctl, " Netcf"); vshPrint(ctl, " Netcf");

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Tue Jun 19 17:48:26 MDT 2012 - jfehlig@suse.com
- Update to libvirt 0.9.11.4 stable release
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Jun 12 14:18:23 MDT 2012 - jfehlig@suse.com Tue Jun 12 14:18:23 MDT 2012 - jfehlig@suse.com

View File

@ -327,7 +327,7 @@ BuildRequires: systemd
Name: libvirt Name: libvirt
Url: http://libvirt.org/ Url: http://libvirt.org/
Version: 0.9.11.3 Version: 0.9.11.4
Release: 0 Release: 0
Summary: A C toolkit to interact with the virtualization capabilities of Linux Summary: A C toolkit to interact with the virtualization capabilities of Linux
License: LGPL-2.1+ License: LGPL-2.1+
@ -410,8 +410,6 @@ Source1: libvirtd.init
Source2: libvirtd-relocation-server.fw Source2: libvirtd-relocation-server.fw
Source99: baselibs.conf Source99: baselibs.conf
# Upstream patches # Upstream patches
Patch0: 9914477e-usb-search-funcs.patch
Patch1: 05abd150-usb-improve-hotplug.patch
# Need to go upstream # Need to go upstream
Patch100: xen-name-for-devid.patch Patch100: xen-name-for-devid.patch
Patch101: clone.patch Patch101: clone.patch
@ -547,8 +545,6 @@ Authors:
%prep %prep
%setup -q %setup -q
%patch0 -p1
%patch1 -p1
%patch100 -p1 %patch100 -p1
%patch101 %patch101
%patch102 -p1 %patch102 -p1

View File

@ -1,7 +1,7 @@
Index: libvirt-0.9.11.3/daemon/libvirtd.conf Index: libvirt-0.9.11.4/daemon/libvirtd.conf
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/daemon/libvirtd.conf --- libvirt-0.9.11.4.orig/daemon/libvirtd.conf
+++ libvirt-0.9.11.3/daemon/libvirtd.conf +++ libvirt-0.9.11.4/daemon/libvirtd.conf
@@ -18,8 +18,8 @@ @@ -18,8 +18,8 @@
# It is necessary to setup a CA and issue server certificates before # It is necessary to setup a CA and issue server certificates before
# using this capability. # using this capability.
@ -13,10 +13,10 @@ Index: libvirt-0.9.11.3/daemon/libvirtd.conf
# Listen for unencrypted TCP connections on the public TCP/IP port. # Listen for unencrypted TCP connections on the public TCP/IP port.
# NB, must pass the --listen flag to the libvirtd process for this to # NB, must pass the --listen flag to the libvirtd process for this to
Index: libvirt-0.9.11.3/daemon/libvirtd.c Index: libvirt-0.9.11.4/daemon/libvirtd.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/daemon/libvirtd.c --- libvirt-0.9.11.4.orig/daemon/libvirtd.c
+++ libvirt-0.9.11.3/daemon/libvirtd.c +++ libvirt-0.9.11.4/daemon/libvirtd.c
@@ -872,7 +872,7 @@ daemonConfigNew(bool privileged ATTRIBUT @@ -872,7 +872,7 @@ daemonConfigNew(bool privileged ATTRIBUT
return NULL; return NULL;
} }

View File

@ -7,10 +7,10 @@ drivers as loadable modules instead of built-in to the
daemon. Then the qemu driver would only be loaded when needed, daemon. Then the qemu driver would only be loaded when needed,
which would never be the case on a xen-only configuration. which would never be the case on a xen-only configuration.
Index: libvirt-0.9.11.3/src/qemu/qemu_conf.c Index: libvirt-0.9.11.4/src/qemu/qemu_conf.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu_conf.c --- libvirt-0.9.11.4.orig/src/qemu/qemu_conf.c
+++ libvirt-0.9.11.3/src/qemu/qemu_conf.c +++ libvirt-0.9.11.4/src/qemu/qemu_conf.c
@@ -271,9 +271,7 @@ int qemudLoadDriverConfig(struct qemud_d @@ -271,9 +271,7 @@ int qemudLoadDriverConfig(struct qemud_d
return -1; return -1;
} }

View File

@ -1,8 +1,8 @@
Index: libvirt-0.9.11.3/src/qemu/qemu.conf Index: libvirt-0.9.11.4/src/qemu/qemu.conf
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/qemu/qemu.conf --- libvirt-0.9.11.4.orig/src/qemu/qemu.conf
+++ libvirt-0.9.11.3/src/qemu/qemu.conf +++ libvirt-0.9.11.4/src/qemu/qemu.conf
@@ -136,7 +136,16 @@ @@ -146,7 +146,16 @@
# leaving SELinux enabled for the host in general, then set this # leaving SELinux enabled for the host in general, then set this
# to 'none' instead. # to 'none' instead.
# #
@ -19,9 +19,9 @@ Index: libvirt-0.9.11.3/src/qemu/qemu.conf
# If set to non-zero, then the default security labeling # If set to non-zero, then the default security labeling
# will make guests confined. If set to zero, then guests # will make guests confined. If set to zero, then guests
@@ -317,6 +326,15 @@ @@ -319,6 +328,15 @@
# max_processes = 0 #allow_disk_format_probing = 1
# max_files = 0
+# SUSE note: +# SUSE note:
+# Many lock managers, sanlock included, will kill the resources +# Many lock managers, sanlock included, will kill the resources

View File

@ -1,7 +1,7 @@
Index: libvirt-0.9.11.3/tools/Makefile.am Index: libvirt-0.9.11.4/tools/Makefile.am
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/tools/Makefile.am --- libvirt-0.9.11.4.orig/tools/Makefile.am
+++ libvirt-0.9.11.3/tools/Makefile.am +++ libvirt-0.9.11.4/tools/Makefile.am
@@ -182,24 +182,22 @@ install-data-local: install-init install @@ -182,24 +182,22 @@ install-data-local: install-init install
uninstall-local: uninstall-init uninstall-systemd uninstall-local: uninstall-init uninstall-systemd
@ -33,10 +33,10 @@ Index: libvirt-0.9.11.3/tools/Makefile.am
if LIBVIRT_INIT_SCRIPT_RED_HAT if LIBVIRT_INIT_SCRIPT_RED_HAT
Index: libvirt-0.9.11.3/tools/libvirt-guests.sysconf Index: libvirt-0.9.11.4/tools/libvirt-guests.sysconf
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/tools/libvirt-guests.sysconf --- libvirt-0.9.11.4.orig/tools/libvirt-guests.sysconf
+++ libvirt-0.9.11.3/tools/libvirt-guests.sysconf +++ libvirt-0.9.11.4/tools/libvirt-guests.sysconf
@@ -1,19 +1,29 @@ @@ -1,19 +1,29 @@
+## Path: System/Virtualization/libvirt +## Path: System/Virtualization/libvirt
+ +
@ -101,10 +101,10 @@ Index: libvirt-0.9.11.3/tools/libvirt-guests.sysconf
# some file systems. # some file systems.
-#BYPASS_CACHE=0 -#BYPASS_CACHE=0
+BYPASS_CACHE=0 +BYPASS_CACHE=0
Index: libvirt-0.9.11.3/tools/libvirt-guests.init.sh Index: libvirt-0.9.11.4/tools/libvirt-guests.init.sh
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/tools/libvirt-guests.init.sh --- libvirt-0.9.11.4.orig/tools/libvirt-guests.init.sh
+++ libvirt-0.9.11.3/tools/libvirt-guests.init.sh +++ libvirt-0.9.11.4/tools/libvirt-guests.init.sh
@@ -4,10 +4,10 @@ @@ -4,10 +4,10 @@
# #
### BEGIN INIT INFO ### BEGIN INIT INFO
@ -230,7 +230,7 @@ Index: libvirt-0.9.11.3/tools/libvirt-guests.init.sh
return return
fi fi
fi fi
@@ -504,14 +526,13 @@ gueststatus() { @@ -508,14 +530,13 @@ gueststatus() {
rh_status() { rh_status() {
if [ -f "$LISTFILE" ]; then if [ -f "$LISTFILE" ]; then
gettext "stopped, with saved guests"; echo gettext "stopped, with saved guests"; echo
@ -246,16 +246,16 @@ Index: libvirt-0.9.11.3/tools/libvirt-guests.init.sh
fi fi
} }
@@ -555,4 +576,4 @@ case "$1" in @@ -559,4 +580,4 @@ case "$1" in
usage usage
;; ;;
esac esac
-exit $RETVAL -exit $RETVAL
+rc_exit +rc_exit
Index: libvirt-0.9.11.3/daemon/Makefile.am Index: libvirt-0.9.11.4/daemon/Makefile.am
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/daemon/Makefile.am --- libvirt-0.9.11.4.orig/daemon/Makefile.am
+++ libvirt-0.9.11.3/daemon/Makefile.am +++ libvirt-0.9.11.4/daemon/Makefile.am
@@ -249,22 +249,16 @@ uninstall-logrotate: @@ -249,22 +249,16 @@ uninstall-logrotate:
rmdir $(DESTDIR)$(sysconfdir)/logrotate.d || : rmdir $(DESTDIR)$(sysconfdir)/logrotate.d || :
@ -297,10 +297,10 @@ Index: libvirt-0.9.11.3/daemon/Makefile.am
else else
install-init-redhat: install-init-redhat:
uninstall-init-redhat: uninstall-init-redhat:
Index: libvirt-0.9.11.3/daemon/libvirtd.sysconf Index: libvirt-0.9.11.4/daemon/libvirtd.sysconf
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/daemon/libvirtd.sysconf --- libvirt-0.9.11.4.orig/daemon/libvirtd.sysconf
+++ libvirt-0.9.11.3/daemon/libvirtd.sysconf +++ libvirt-0.9.11.4/daemon/libvirtd.sysconf
@@ -1,16 +1,25 @@ @@ -1,16 +1,25 @@
+## Path: System/Virtualization/libvirt +## Path: System/Virtualization/libvirt
+ +

View File

@ -13,10 +13,10 @@ Date: Wed Jan 27 16:11:41 2010 -0700
This approach allows removing a disk when domain is inactive. We This approach allows removing a disk when domain is inactive. We
obviously can't search xenstore when the domain is inactive. obviously can't search xenstore when the domain is inactive.
Index: libvirt-0.9.11.3/src/xen/xend_internal.c Index: libvirt-0.9.11.4/src/xen/xend_internal.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/xen/xend_internal.c --- libvirt-0.9.11.4.orig/src/xen/xend_internal.c
+++ libvirt-0.9.11.3/src/xen/xend_internal.c +++ libvirt-0.9.11.4/src/xen/xend_internal.c
@@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
static int static int

View File

@ -1,7 +1,7 @@
Index: libvirt-0.9.11.3/src/xenxs/xen_sxpr.c Index: libvirt-0.9.11.4/src/xenxs/xen_sxpr.c
=================================================================== ===================================================================
--- libvirt-0.9.11.3.orig/src/xenxs/xen_sxpr.c --- libvirt-0.9.11.4.orig/src/xenxs/xen_sxpr.c
+++ libvirt-0.9.11.3/src/xenxs/xen_sxpr.c +++ libvirt-0.9.11.4/src/xenxs/xen_sxpr.c
@@ -340,7 +340,7 @@ error: @@ -340,7 +340,7 @@ error:
static int static int
xenParseSxprDisks(virDomainDefPtr def, xenParseSxprDisks(virDomainDefPtr def,