Hello community,
here is the log from the commit of package libvirt for openSUSE:Factory
checked in at Mon Mar 22 17:06:02 CET 2010.
--------
--- libvirt/libvirt.changes 2010-02-22 19:06:44.000000000 +0100
+++ /mounts/work_src_done/STABLE/libvirt/libvirt.changes 2010-03-22 05:12:05.000000000 +0100
@@ -1,0 +2,35 @@
+Sun Mar 21 21:20:17 MST 2010 - jfehlig@novell.com
+
+- Updated to version 0.7.7
+ - Introduce public API for domain async job handling
+ - macvtap support
+ - Add QEMU support for virtio channel
+ - Add persistence of PCI addresses to QEMU
+ - Functions for computing baseline CPU from a set of host CPUs
+ - Public API for virDomain{Attach,Detach}DeviceFlags
+ - lots of improvements and bug fixes
+
+-------------------------------------------------------------------
+Tue Mar 9 10:40:49 MST 2010 - jfehlig@novell.com
+
+- Ensure yast-created bridges are not manipulated by libvirt
+ bnc#584757
+ Modified suse-network.patch
+
+-------------------------------------------------------------------
+Wed Mar 3 19:03:03 MST 2010 - jfehlig@novell.com
+
+- Fix ordering of xen disks to preserve 'bootable' flag
+ bnc#474738
+ xend-disk-order.patch
+- Add support for blktap2 disks
+ xen-tap2-support.patch
+
+-------------------------------------------------------------------
+Mon Mar 1 15:48:51 MST 2010 - jfehlig@novell.com
+
+- Fix listing of yast-created bridges
+ bnc#583754
+ Modified suse-network.patch
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
devflag-01.patch
devflag-02.patch
devflag-03.patch
devflag-04.patch
devflag-05.patch
devflag-06.patch
devflag-07.patch
devflag-08.patch
devflag-09.patch
libvirt-0.7.6.tar.bz2
New:
----
libvirt-0.7.7.tar.bz2
lxc-cgroup.patch
xen-tap2-support.patch
xend-disk-order.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libvirt.spec ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package libvirt (Version 0.7.6)
+# spec file for package libvirt (Version 0.7.7)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -113,8 +113,8 @@
License: LGPLv2.1+
Group: Development/Libraries/C and C++
AutoReqProv: yes
-Version: 0.7.6
-Release: 2
+Version: 0.7.7
+Release: 1
Summary: A C toolkit to interract with the virtualization capabilities of Linux
# The client side, i.e. shared libs and virsh are in a subpackage
Requires: libvirt-client = %{version}-%{release}
@@ -138,21 +138,15 @@
Source0: %{name}-%{version}.tar.bz2
Source1: libvirtd.init
# Upstream patches
-Patch0: devflag-01.patch
-Patch1: devflag-02.patch
-Patch2: devflag-03.patch
-Patch3: devflag-04.patch
-Patch4: devflag-05.patch
-Patch5: devflag-06.patch
-Patch6: devflag-07.patch
-Patch7: devflag-08.patch
-Patch8: devflag-09.patch
-Patch9: xen-name-for-devid.patch
+Patch0: xen-name-for-devid.patch
+Patch1: lxc-cgroup.patch
# Need to go upstream
Patch100: socat.patch
Patch101: clone.patch
Patch102: xen-pv-cdrom.patch
Patch103: xen-domctl-ver7.patch
+Patch104: xen-tap2-support.patch
+Patch105: xend-disk-order.patch
# Our patches
Patch200: libvirtd-defaults.patch
Patch201: suse-network.patch
@@ -262,18 +256,12 @@
%setup -q
%patch0 -p1
%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
%patch100 -p1
%patch101
%patch102 -p1
%patch103 -p1
+%patch104 -p1
+%patch105 -p1
%patch200 -p1
%patch201 -p1
%patch202 -p1
++++++ clone.patch ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -2,7 +2,7 @@
===================================================================
--- src/lxc/lxc_container.c.orig
+++ src/lxc/lxc_container.c
-@@ -814,6 +814,9 @@ int lxcContainerStart(virDomainDefPtr de
+@@ -828,6 +828,9 @@ int lxcContainerStart(virDomainDefPtr de
lxc_child_argv_t args = { def, nveths, veths, control, ttyPath };
/* allocate a stack for the container */
@@ -10,11 +10,11 @@
+ stacksize *= 2;
+#endif
if (VIR_ALLOC_N(stack, stacksize) < 0) {
- virReportOOMError(NULL);
+ virReportOOMError();
return -1;
-@@ -828,7 +831,11 @@ int lxcContainerStart(virDomainDefPtr de
- if (def->nets != NULL)
+@@ -846,7 +849,11 @@ int lxcContainerStart(virDomainDefPtr de
flags |= CLONE_NEWNET;
+ }
+#ifdef __ia64__
+ pid = __clone2(lxcContainerChild, stack, stacksize, flags, &args);
@@ -22,9 +22,9 @@
pid = clone(lxcContainerChild, stacktop, flags, &args);
+#endif
VIR_FREE(stack);
- DEBUG("clone() returned, %d", pid);
+ DEBUG("clone() completed, new container PID is %d", pid);
-@@ -854,6 +861,7 @@ int lxcContainerAvailable(int features)
+@@ -872,6 +879,7 @@ int lxcContainerAvailable(int features)
char *childStack;
char *stack;
int childStatus;
@@ -32,7 +32,7 @@
if (features & LXC_CONTAINER_FEATURE_USER)
flags |= CLONE_NEWUSER;
-@@ -861,14 +869,21 @@ int lxcContainerAvailable(int features)
+@@ -879,14 +887,21 @@ int lxcContainerAvailable(int features)
if (features & LXC_CONTAINER_FEATURE_NET)
flags |= CLONE_NEWNET;
++++++ libvirt-0.7.6.tar.bz2 -> libvirt-0.7.7.tar.bz2 ++++++
libvirt/libvirt-0.7.6.tar.bz2 /mounts/work_src_done/STABLE/libvirt/libvirt-0.7.7.tar.bz2 differ: char 11, line 1
++++++ lxc-cgroup.patch ++++++
commit f034c0bfd7089ba3400b7a44b97540c4a8785e35
Author: Jim Fehlig
Date: Sun Mar 21 19:59:13 2010 -0600
Avoid libvirtd crash when cgroups is not configured on host
Invoking virDomainSetMemory() on lxc driver results in libvirtd
segfault when cgroups has not been configured on the host.
Ensure driver->cgroup is non-null before invoking
virCgroupForDomain(). To prevent similar segfaults in the future,
ensure driver parameter to virCgroupForDomain() is non-null before
dereferencing.
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index aeec593..ba13065 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -625,6 +625,12 @@ static int lxcDomainSetMemory(virDomainPtr dom, unsigned long newmem) {
}
if (virDomainObjIsActive(vm)) {
+ if (driver->cgroup == NULL) {
+ lxcError(VIR_ERR_NO_SUPPORT,
+ "%s", _("cgroups must be configured on the host"));
+ goto cleanup;
+ }
+
if (virCgroupForDomain(driver->cgroup, vm->def->name, &cgroup, 0) != 0) {
lxcError(VIR_ERR_INTERNAL_ERROR,
_("Unable to get cgroup for %s\n"), vm->def->name);
diff --git a/src/util/cgroup.c b/src/util/cgroup.c
index 8777781..496d9d3 100644
--- a/src/util/cgroup.c
+++ b/src/util/cgroup.c
@@ -692,6 +692,9 @@ int virCgroupForDomain(virCgroupPtr driver,
int rc;
char *path;
+ if (driver == NULL)
+ return -EINVAL;
+
if (virAsprintf(&path, "%s/%s", driver->path, name) < 0)
return -ENOMEM;
++++++ snapshots.patch ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-0.7.6/include/libvirt/libvirt.h.in
+Index: libvirt-0.7.7/include/libvirt/libvirt.h.in
===================================================================
---- libvirt-0.7.6.orig/include/libvirt/libvirt.h.in
-+++ libvirt-0.7.6/include/libvirt/libvirt.h.in
+--- libvirt-0.7.7.orig/include/libvirt/libvirt.h.in
++++ libvirt-0.7.7/include/libvirt/libvirt.h.in
@@ -621,6 +621,21 @@ int virDomainRestore
const char *from);
@@ -24,10 +24,10 @@
* Domain core dump
*/
int virDomainCoreDump (virDomainPtr domain,
-Index: libvirt-0.7.6/src/libvirt.c
+Index: libvirt-0.7.7/src/libvirt.c
===================================================================
---- libvirt-0.7.6.orig/src/libvirt.c
-+++ libvirt-0.7.6/src/libvirt.c
+--- libvirt-0.7.7.orig/src/libvirt.c
++++ libvirt-0.7.7/src/libvirt.c
@@ -2379,6 +2379,166 @@ error:
}
@@ -195,10 +195,10 @@
* virDomainCoreDump:
* @domain: a domain object
* @to: path for the core file
-Index: libvirt-0.7.6/src/driver.h
+Index: libvirt-0.7.7/src/driver.h
===================================================================
---- libvirt-0.7.6.orig/src/driver.h
-+++ libvirt-0.7.6/src/driver.h
+--- libvirt-0.7.7.orig/src/driver.h
++++ libvirt-0.7.7/src/driver.h
@@ -136,6 +136,21 @@ typedef int
(*virDrvDomainRestore) (virConnectPtr conn,
const char *from);
@@ -221,10 +221,10 @@
(*virDrvDomainCoreDump) (virDomainPtr domain,
const char *to,
int flags);
-@@ -458,6 +473,11 @@ struct _virDriver {
- virDrvDomainIsActive domainIsActive;
- virDrvDomainIsPersistent domainIsPersistent;
- virDrvCPUCompare cpuCompare;
+@@ -473,6 +488,11 @@ struct _virDriver {
+ virDrvCPUBaseline cpuBaseline;
+ virDrvDomainGetJobInfo domainGetJobInfo;
+ virDrvDomainAbortJob domainAbortJob;
+ virDrvDomainSnapshotCreate domainSnapshotCreate;
+ virDrvDomainSnapshotApply domainSnapshotApply;
+ virDrvDomainSnapshotDelete domainSnapshotDelete;
@@ -233,10 +233,10 @@
};
typedef int
-Index: libvirt-0.7.6/src/xen/xen_driver.c
+Index: libvirt-0.7.7/src/xen/xen_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xen_driver.c
-+++ libvirt-0.7.6/src/xen/xen_driver.c
+--- libvirt-0.7.7.orig/src/xen/xen_driver.c
++++ libvirt-0.7.7/src/xen/xen_driver.c
@@ -1052,6 +1052,81 @@ xenUnifiedDomainRestore (virConnectPtr c
}
@@ -319,10 +319,10 @@
xenUnifiedDomainCoreDump (virDomainPtr dom, const char *to, int flags)
{
GET_PRIVATE(dom->conn);
-@@ -1904,6 +1979,11 @@ static virDriver xenUnifiedDriver = {
- xenUnifiedDomainIsActive,
- xenUnifiedDomainisPersistent,
- NULL, /* cpuCompare */
+@@ -1906,6 +1981,11 @@ static virDriver xenUnifiedDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ xenUnifiedDomainSnapshotCreate, /* domainSnapshotCreate */
+ xenUnifiedDomainSnapshotApply, /* domainSnapshotApply */
+ xenUnifiedDomainSnapshotDelete, /* domainSnapshotDelete */
@@ -331,10 +331,10 @@
};
/**
-Index: libvirt-0.7.6/src/xen/xen_driver.h
+Index: libvirt-0.7.7/src/xen/xen_driver.h
===================================================================
---- libvirt-0.7.6.orig/src/xen/xen_driver.h
-+++ libvirt-0.7.6/src/xen/xen_driver.h
+--- libvirt-0.7.7.orig/src/xen/xen_driver.h
++++ libvirt-0.7.7/src/xen/xen_driver.h
@@ -100,6 +100,11 @@ struct xenUnifiedDriver {
virDrvDomainGetSchedulerType domainGetSchedulerType;
virDrvDomainGetSchedulerParameters domainGetSchedulerParameters;
@@ -347,10 +347,10 @@
};
typedef struct xenXMConfCache *xenXMConfCachePtr;
-Index: libvirt-0.7.6/src/xen/xend_internal.c
+Index: libvirt-0.7.7/src/xen/xend_internal.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xend_internal.c
-+++ libvirt-0.7.6/src/xen/xend_internal.c
+--- libvirt-0.7.7.orig/src/xen/xend_internal.c
++++ libvirt-0.7.7/src/xen/xend_internal.c
@@ -53,6 +53,12 @@
#ifndef PROXY
@@ -364,7 +364,7 @@
/*
* The number of Xen scheduler parameters
*/
-@@ -3284,6 +3290,87 @@ xenDaemonDomainRestore(virConnectPtr con
+@@ -3297,6 +3303,87 @@ xenDaemonDomainRestore(virConnectPtr con
}
return xend_op(conn, "", "op", "restore", "file", filename, NULL);
}
@@ -452,7 +452,7 @@
#endif /* !PROXY */
/**
-@@ -5235,6 +5322,11 @@ struct xenUnifiedDriver xenDaemonDriver
+@@ -5245,6 +5332,11 @@ struct xenUnifiedDriver xenDaemonDriver
xenDaemonGetSchedulerType, /* domainGetSchedulerType */
xenDaemonGetSchedulerParameters, /* domainGetSchedulerParameters */
xenDaemonSetSchedulerParameters, /* domainSetSchedulerParameters */
@@ -464,10 +464,10 @@
};
/************************************************************************
-Index: libvirt-0.7.6/src/xen/proxy_internal.c
+Index: libvirt-0.7.7/src/xen/proxy_internal.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/proxy_internal.c
-+++ libvirt-0.7.6/src/xen/proxy_internal.c
+--- libvirt-0.7.7.orig/src/xen/proxy_internal.c
++++ libvirt-0.7.7/src/xen/proxy_internal.c
@@ -83,6 +83,11 @@ struct xenUnifiedDriver xenProxyDriver =
NULL, /* domainGetSchedulerType */
NULL, /* domainGetSchedulerParameters */
@@ -480,10 +480,10 @@
};
-Index: libvirt-0.7.6/src/xen/xen_hypervisor.c
+Index: libvirt-0.7.7/src/xen/xen_hypervisor.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xen_hypervisor.c
-+++ libvirt-0.7.6/src/xen/xen_hypervisor.c
+--- libvirt-0.7.7.orig/src/xen/xen_hypervisor.c
++++ libvirt-0.7.7/src/xen/xen_hypervisor.c
@@ -850,6 +850,11 @@ struct xenUnifiedDriver xenHypervisorDri
xenHypervisorGetSchedulerType, /* domainGetSchedulerType */
xenHypervisorGetSchedulerParameters, /* domainGetSchedulerParameters */
@@ -496,10 +496,10 @@
};
#endif /* !PROXY */
-Index: libvirt-0.7.6/src/xen/xm_internal.c
+Index: libvirt-0.7.7/src/xen/xm_internal.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xm_internal.c
-+++ libvirt-0.7.6/src/xen/xm_internal.c
+--- libvirt-0.7.7.orig/src/xen/xm_internal.c
++++ libvirt-0.7.7/src/xen/xm_internal.c
@@ -118,6 +118,11 @@ struct xenUnifiedDriver xenXMDriver = {
NULL, /* domainGetSchedulerType */
NULL, /* domainGetSchedulerParameters */
@@ -512,10 +512,10 @@
};
#define xenXMError(conn, code, fmt...) \
-Index: libvirt-0.7.6/src/xen/xs_internal.c
+Index: libvirt-0.7.7/src/xen/xs_internal.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xs_internal.c
-+++ libvirt-0.7.6/src/xen/xs_internal.c
+--- libvirt-0.7.7.orig/src/xen/xs_internal.c
++++ libvirt-0.7.7/src/xen/xs_internal.c
@@ -83,6 +83,11 @@ struct xenUnifiedDriver xenStoreDriver =
NULL, /* domainGetSchedulerType */
NULL, /* domainGetSchedulerParameters */
@@ -528,11 +528,11 @@
};
#endif /* ! PROXY */
-Index: libvirt-0.7.6/tools/virsh.c
+Index: libvirt-0.7.7/tools/virsh.c
===================================================================
---- libvirt-0.7.6.orig/tools/virsh.c
-+++ libvirt-0.7.6/tools/virsh.c
-@@ -1237,6 +1237,188 @@ cmdSave(vshControl *ctl, const vshCmd *c
+--- libvirt-0.7.7.orig/tools/virsh.c
++++ libvirt-0.7.7/tools/virsh.c
+@@ -1268,6 +1268,188 @@ cmdSave(vshControl *ctl, const vshCmd *c
}
/*
@@ -721,7 +721,7 @@
* "schedinfo" command
*/
static const vshCmdInfo info_schedinfo[] = {
-@@ -7502,6 +7684,12 @@ static const vshCmdDef commands[] = {
+@@ -7753,6 +7935,12 @@ static const vshCmdDef commands[] = {
{"undefine", cmdUndefine, opts_undefine, info_undefine},
{"uri", cmdURI, NULL, info_uri},
@@ -734,14 +734,14 @@
{"vol-create", cmdVolCreate, opts_vol_create, info_vol_create},
{"vol-create-from", cmdVolCreateFrom, opts_vol_create_from, info_vol_create_from},
{"vol-create-as", cmdVolCreateAs, opts_vol_create_as, info_vol_create_as},
-Index: libvirt-0.7.6/src/lxc/lxc_driver.c
+Index: libvirt-0.7.7/src/lxc/lxc_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/lxc/lxc_driver.c
-+++ libvirt-0.7.6/src/lxc/lxc_driver.c
-@@ -2458,6 +2458,11 @@ static virDriver lxcDriver = {
- lxcDomainIsActive,
- lxcDomainIsPersistent,
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/lxc/lxc_driver.c
++++ libvirt-0.7.7/src/lxc/lxc_driver.c
+@@ -2459,6 +2459,11 @@ static virDriver lxcDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -750,14 +750,14 @@
};
static virStateDriver lxcStateDriver = {
-Index: libvirt-0.7.6/src/openvz/openvz_driver.c
+Index: libvirt-0.7.7/src/openvz/openvz_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/openvz/openvz_driver.c
-+++ libvirt-0.7.6/src/openvz/openvz_driver.c
-@@ -1537,6 +1537,11 @@ static virDriver openvzDriver = {
- openvzDomainIsActive,
- openvzDomainIsPersistent,
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/openvz/openvz_driver.c
++++ libvirt-0.7.7/src/openvz/openvz_driver.c
+@@ -1540,6 +1540,11 @@ static virDriver openvzDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -766,14 +766,14 @@
};
int openvzRegister(void) {
-Index: libvirt-0.7.6/src/qemu/qemu_driver.c
+Index: libvirt-0.7.7/src/qemu/qemu_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/qemu/qemu_driver.c
-+++ libvirt-0.7.6/src/qemu/qemu_driver.c
-@@ -8632,6 +8632,11 @@ static virDriver qemuDriver = {
- qemuDomainIsActive,
- qemuDomainIsPersistent,
- qemuCPUCompare, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/qemu/qemu_driver.c
++++ libvirt-0.7.7/src/qemu/qemu_driver.c
+@@ -9535,6 +9535,11 @@ static virDriver qemuDriver = {
+ qemuCPUBaseline, /* cpuBaseline */
+ qemuDomainGetJobInfo, /* domainGetJobInfo */
+ qemuDomainAbortJob, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -782,14 +782,14 @@
};
-Index: libvirt-0.7.6/src/esx/esx_driver.c
+Index: libvirt-0.7.7/src/esx/esx_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/esx/esx_driver.c
-+++ libvirt-0.7.6/src/esx/esx_driver.c
-@@ -3403,6 +3403,11 @@ static virDriver esxDriver = {
- esxDomainIsActive, /* domainIsActive */
- esxDomainIsPersistent, /* domainIsPersistent */
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/esx/esx_driver.c
++++ libvirt-0.7.7/src/esx/esx_driver.c
+@@ -3410,6 +3410,11 @@ static virDriver esxDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -798,14 +798,14 @@
};
-Index: libvirt-0.7.6/src/test/test_driver.c
+Index: libvirt-0.7.7/src/test/test_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/test/test_driver.c
-+++ libvirt-0.7.6/src/test/test_driver.c
-@@ -5240,6 +5240,11 @@ static virDriver testDriver = {
- testDomainIsActive, /* domainIsActive */
- testDomainIsPersistent, /* domainIsPersistent */
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/test/test_driver.c
++++ libvirt-0.7.7/src/test/test_driver.c
+@@ -5245,6 +5245,11 @@ static virDriver testDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -814,14 +814,14 @@
};
static virNetworkDriver testNetworkDriver = {
-Index: libvirt-0.7.6/src/uml/uml_driver.c
+Index: libvirt-0.7.7/src/uml/uml_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/uml/uml_driver.c
-+++ libvirt-0.7.6/src/uml/uml_driver.c
-@@ -1926,6 +1926,11 @@ static virDriver umlDriver = {
- umlDomainIsActive,
- umlDomainIsPersistent,
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/uml/uml_driver.c
++++ libvirt-0.7.7/src/uml/uml_driver.c
+@@ -1932,6 +1932,11 @@ static virDriver umlDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -830,14 +830,14 @@
};
-Index: libvirt-0.7.6/src/vbox/vbox_tmpl.c
+Index: libvirt-0.7.7/src/vbox/vbox_tmpl.c
===================================================================
---- libvirt-0.7.6.orig/src/vbox/vbox_tmpl.c
-+++ libvirt-0.7.6/src/vbox/vbox_tmpl.c
-@@ -7059,6 +7059,11 @@ virDriver NAME(Driver) = {
- vboxDomainIsActive,
- vboxDomainIsPersistent,
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/vbox/vbox_tmpl.c
++++ libvirt-0.7.7/src/vbox/vbox_tmpl.c
+@@ -7065,6 +7065,11 @@ virDriver NAME(Driver) = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -846,14 +846,14 @@
};
virNetworkDriver NAME(NetworkDriver) = {
-Index: libvirt-0.7.6/src/opennebula/one_driver.c
+Index: libvirt-0.7.7/src/opennebula/one_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/opennebula/one_driver.c
-+++ libvirt-0.7.6/src/opennebula/one_driver.c
-@@ -785,6 +785,11 @@ static virDriver oneDriver = {
- NULL, /* domainIsActive */
- NULL, /* domainIsPersistent */
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/opennebula/one_driver.c
++++ libvirt-0.7.7/src/opennebula/one_driver.c
+@@ -788,6 +788,11 @@ static virDriver oneDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -862,14 +862,14 @@
};
static virStateDriver oneStateDriver = {
-Index: libvirt-0.7.6/src/phyp/phyp_driver.c
+Index: libvirt-0.7.7/src/phyp/phyp_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/phyp/phyp_driver.c
-+++ libvirt-0.7.6/src/phyp/phyp_driver.c
-@@ -1653,6 +1653,11 @@ virDriver phypDriver = {
- NULL, /* domainIsActive */
- NULL, /* domainIsPersistent */
- NULL, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/phyp/phyp_driver.c
++++ libvirt-0.7.7/src/phyp/phyp_driver.c
+@@ -1656,6 +1656,11 @@ virDriver phypDriver = {
+ NULL, /* cpuBaseline */
+ NULL, /* domainGetJobInfo */
+ NULL, /* domainAbortJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -878,14 +878,14 @@
};
int
-Index: libvirt-0.7.6/src/remote/remote_driver.c
+Index: libvirt-0.7.7/src/remote/remote_driver.c
===================================================================
---- libvirt-0.7.6.orig/src/remote/remote_driver.c
-+++ libvirt-0.7.6/src/remote/remote_driver.c
-@@ -8994,6 +8994,11 @@ static virDriver remote_driver = {
- remoteDomainIsActive, /* domainIsActive */
- remoteDomainIsPersistent, /* domainIsPersistent */
- remoteCPUCompare, /* cpuCompare */
+--- libvirt-0.7.7.orig/src/remote/remote_driver.c
++++ libvirt-0.7.7/src/remote/remote_driver.c
+@@ -9143,6 +9143,11 @@ static virDriver remote_driver = {
+ remoteCPUBaseline, /* cpuBaseline */
+ remoteDomainGetJobInfo, /* domainGetJobInfo */
+ remoteDomainAbortJob, /* domainFinishJob */
+ NULL, /* domainSnapshotCreate */
+ NULL, /* domainSnapshotApply */
+ NULL, /* domainSnapshotDelete */
@@ -894,11 +894,11 @@
};
static virNetworkDriver network_driver = {
-Index: libvirt-0.7.6/docs/libvirt-api.xml
+Index: libvirt-0.7.7/docs/libvirt-api.xml
===================================================================
---- libvirt-0.7.6.orig/docs/libvirt-api.xml
-+++ libvirt-0.7.6/docs/libvirt-api.xml
-@@ -293,6 +293,11 @@
+--- libvirt-0.7.7.orig/docs/libvirt-api.xml
++++ libvirt-0.7.7/docs/libvirt-api.xml
+@@ -300,6 +300,11 @@
<exports symbol='virDomainSetVcpus' type='function'/>
<exports symbol='virDomainShutdown' type='function'/>
<exports symbol='virDomainSuspend' type='function'/>
@@ -910,7 +910,7 @@
<exports symbol='virDomainUndefine' type='function'/>
<exports symbol='virEventAddHandleFunc' type='function'/>
<exports symbol='virEventAddTimeoutFunc' type='function'/>
-@@ -1972,6 +1977,36 @@ This function may requires privileged ac
+@@ -2040,6 +2045,36 @@ This function may requires privileged ac
<return type='int' info='0 in case of success and -1 in case of failure.'/>
<arg name='domain' type='virDomainPtr' info='a domain object'/>
</function>
@@ -947,10 +947,10 @@
<function name='virDomainUndefine' file='libvirt' module='libvirt'>
<info><![CDATA[Undefine a domain but does not stop it if it is running]]></info>
<return type='int' info='0 in case of success, -1 in case of error'/>
-Index: libvirt-0.7.6/src/libvirt_public.syms
+Index: libvirt-0.7.7/src/libvirt_public.syms
===================================================================
---- libvirt-0.7.6.orig/src/libvirt_public.syms
-+++ libvirt-0.7.6/src/libvirt_public.syms
+--- libvirt-0.7.7.orig/src/libvirt_public.syms
++++ libvirt-0.7.7/src/libvirt_public.syms
@@ -215,6 +215,11 @@ LIBVIRT_0.4.2 {
LIBVIRT_0.4.5 {
global:
@@ -963,11 +963,11 @@
} LIBVIRT_0.4.2;
LIBVIRT_0.5.0 {
-Index: libvirt-0.7.6/python/generator.py
+Index: libvirt-0.7.7/python/generator.py
===================================================================
---- libvirt-0.7.6.orig/python/generator.py
-+++ libvirt-0.7.6/python/generator.py
-@@ -289,6 +289,7 @@ skip_impl = (
+--- libvirt-0.7.7.orig/python/generator.py
++++ libvirt-0.7.7/python/generator.py
+@@ -290,6 +290,7 @@ skip_impl = (
'virDomainSetSchedulerParameters',
'virDomainGetVcpus',
'virDomainPinVcpu',
@@ -975,10 +975,10 @@
'virSecretGetValue',
'virSecretSetValue',
'virSecretGetUUID',
-Index: libvirt-0.7.6/python/libvirt-override.c
+Index: libvirt-0.7.7/python/libvirt-override.c
===================================================================
---- libvirt-0.7.6.orig/python/libvirt-override.c
-+++ libvirt-0.7.6/python/libvirt-override.c
+--- libvirt-0.7.7.orig/python/libvirt-override.c
++++ libvirt-0.7.7/python/libvirt-override.c
@@ -1542,6 +1542,34 @@ libvirt_virStoragePoolGetInfo(PyObject *
return(py_retval);
}
@@ -1014,7 +1014,7 @@
static PyObject *
libvirt_virStorageVolGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
-@@ -2717,6 +2745,7 @@ static PyMethodDef libvirtMethods[] = {
+@@ -2805,6 +2833,7 @@ static PyMethodDef libvirtMethods[] = {
{(char *) "virStoragePoolGetAutostart", libvirt_virStoragePoolGetAutostart, METH_VARARGS, NULL},
{(char *) "virStoragePoolListVolumes", libvirt_virStoragePoolListVolumes, METH_VARARGS, NULL},
{(char *) "virStoragePoolGetInfo", libvirt_virStoragePoolGetInfo, METH_VARARGS, NULL},
@@ -1022,11 +1022,11 @@
{(char *) "virStorageVolGetInfo", libvirt_virStorageVolGetInfo, METH_VARARGS, NULL},
{(char *) "virStoragePoolGetUUID", libvirt_virStoragePoolGetUUID, METH_VARARGS, NULL},
{(char *) "virStoragePoolGetUUIDString", libvirt_virStoragePoolGetUUIDString, METH_VARARGS, NULL},
-Index: libvirt-0.7.6/python/libvirt-override-api.xml
+Index: libvirt-0.7.7/python/libvirt-override-api.xml
===================================================================
---- libvirt-0.7.6.orig/python/libvirt-override-api.xml
-+++ libvirt-0.7.6/python/libvirt-override-api.xml
-@@ -150,6 +150,11 @@
+--- libvirt-0.7.7.orig/python/libvirt-override-api.xml
++++ libvirt-0.7.7/python/libvirt-override-api.xml
+@@ -155,6 +155,11 @@
<arg name='domain' type='virDomainPtr' info='pointer to domain object'/>
<arg name='params' type='virSchedParameterPtr' info='pointer to scheduler parameter objects'/>
</function>
@@ -1038,10 +1038,10 @@
<function name='virConnectListStoragePools' file='python'>
<info>list the storage pools, stores the pointers to the names in @names</info>
<arg name='conn' type='virConnectPtr' info='pointer to the hypervisor connection'/>
-Index: libvirt-0.7.6/src/xen/xen_inotify.c
+Index: libvirt-0.7.7/src/xen/xen_inotify.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xen_inotify.c
-+++ libvirt-0.7.6/src/xen/xen_inotify.c
+--- libvirt-0.7.7.orig/src/xen/xen_inotify.c
++++ libvirt-0.7.7/src/xen/xen_inotify.c
@@ -86,6 +86,11 @@ struct xenUnifiedDriver xenInotifyDriver
NULL, /* domainGetSchedulerType */
NULL, /* domainGetSchedulerParameters */
++++++ socat.patch ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -1,8 +1,8 @@
-Index: libvirt-0.7.4/src/remote/remote_driver.c
+Index: libvirt-0.7.7/src/remote/remote_driver.c
===================================================================
---- libvirt-0.7.4.orig/src/remote/remote_driver.c
-+++ libvirt-0.7.4/src/remote/remote_driver.c
-@@ -763,12 +763,29 @@ doRemoteOpen (virConnectPtr conn,
+--- libvirt-0.7.7.orig/src/remote/remote_driver.c
++++ libvirt-0.7.7/src/remote/remote_driver.c
+@@ -766,12 +766,29 @@ doRemoteOpen (virConnectPtr conn,
cmd_argv[j++] = strdup ("none");
}
cmd_argv[j++] = strdup (priv->hostname);
++++++ suse-network.patch ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -1,58 +1,56 @@
-Index: libvirt-0.7.5/src/conf/network_conf.c
+Index: libvirt-0.7.7/src/conf/network_conf.c
===================================================================
---- libvirt-0.7.5.orig/src/conf/network_conf.c
-+++ libvirt-0.7.5/src/conf/network_conf.c
-@@ -863,6 +863,137 @@ error:
+--- libvirt-0.7.7.orig/src/conf/network_conf.c
++++ libvirt-0.7.7/src/conf/network_conf.c
+@@ -845,6 +845,135 @@ error:
return NULL;
}
-+static int virNetworkIsBridge(const char *name)
++int virNetworkIsBridge(const char *name)
+{
+ char *path = NULL;
+ int ret = 0;
+ struct stat s;
+
+ if (asprintf(&path, "/sys/class/net/%s/bridge", name) < 0)
-+ goto out;
++ goto out;
+
+ if (stat(path, &s) != 0)
-+ goto out;
++ goto out;
+
+ if (S_ISDIR(s.st_mode))
-+ ret = 1;
++ ret = 1;
+
-+ out:
++out:
+ free(path);
+ return ret;
-+}
++ }
+
+static unsigned long virNetworkDefSuseGetValue(const char *netName, const char *valName)
+{
-+ unsigned long ret = 0;
-+ char *path = NULL;
-+ FILE *f;
-+
-+ if (asprintf(&path, "/sys/class/net/%s/bridge/%s", netName, valName) < 0)
-+ return ret;
-+
-+ if ((f = fopen(path, "r")) == NULL)
-+ goto out;
-+
-+ if (fscanf(f, "%lu", &ret) != 1) {
-+ ret = 0;
-+ goto out;
-+ }
-+
-+
-+ out:
-+ if (f != NULL)
-+ fclose(f);
-+ free(path);
-+ return ret;
++ unsigned long ret = 0;
++ char *path = NULL;
++ FILE *f;
++
++ if (asprintf(&path, "/sys/class/net/%s/bridge/%s", netName, valName) < 0)
++ return ret;
++
++ if ((f = fopen(path, "r")) == NULL)
++ goto out;
++
++ if (fscanf(f, "%lu", &ret) != 1) {
++ ret = 0;
++ goto out;
++ }
++
++ out:
++ if (f != NULL)
++ fclose(f);
++ free(path);
++ return ret;
+}
+
-+static virNetworkObjPtr virNetworkLoadSuseNet(virConnectPtr conn,
-+ virNetworkObjListPtr nets,
++static virNetworkObjPtr virNetworkLoadSuseNet(virNetworkObjListPtr nets,
+ const char *name)
+{
+ virNetworkDefPtr def;
@@ -60,21 +58,22 @@
+ int err;
+
+ if ((network = virNetworkFindByName(nets, name))) {
-+ return network;
++ virNetworkObjUnlock(network);
++ return network;
+ }
+
+ if (VIR_ALLOC(network) < 0) {
-+ virNetworkReportError(conn, VIR_ERR_NO_MEMORY, NULL);
-+ return NULL;
++ virNetworkReportError(VIR_ERR_NO_MEMORY, NULL);
++ return NULL;
+ }
+
+ network->autostart = 1;
+ network->active = 1;
-+ network->readonly = 1;
++ network->suse = 1;
+
+ if (VIR_ALLOC(def) < 0) {
-+ virNetworkReportError(conn, VIR_ERR_NO_MEMORY, NULL);
-+ goto error;
++ virNetworkReportError(VIR_ERR_NO_MEMORY, NULL);
++ goto error;
+ }
+
+ network->def = def;
@@ -82,29 +81,29 @@
+ /* name */
+ def->name = strdup(name);
+ if (def->name == NULL) {
-+ virNetworkReportError(conn, VIR_ERR_NO_MEMORY, NULL);
-+ goto error;
++ virNetworkReportError(VIR_ERR_NO_MEMORY, NULL);
++ goto error;
+ }
+
+ /* uuid */
+ if ((err = virUUIDGenerate(def->uuid))) {
-+ virNetworkReportError(conn, VIR_ERR_INTERNAL_ERROR,
-+ _("Failed to generate UUID: %s"), strerror(err));
-+ goto error;
++ virNetworkReportError(VIR_ERR_INTERNAL_ERROR,
++ _("Failed to generate UUID: %s"), strerror(err));
++ goto error;
+ }
+
+ /* bridge information */
+ def->bridge = strdup(name);
+ if (def->bridge == NULL) {
-+ virNetworkReportError(conn, VIR_ERR_NO_MEMORY, NULL);
-+ goto error;
++ virNetworkReportError(VIR_ERR_NO_MEMORY, NULL);
++ goto error;
+ }
+ def->stp = (int)virNetworkDefSuseGetValue(name, "stp_state");
+ def->delay = virNetworkDefSuseGetValue(name, "forward_delay");
+
+ /* Add network to the list */
+ if (VIR_REALLOC_N(nets->objs, nets->count + 1) < 0) {
-+ virNetworkReportError(conn, VIR_ERR_NO_MEMORY, NULL);
++ virNetworkReportError(VIR_ERR_NO_MEMORY, NULL);
+ VIR_FREE(network);
+ return NULL;
+ }
@@ -114,78 +113,144 @@
+
+ return network;
+
-+ error:
++error:
+ virNetworkObjFree(network);
+ return NULL;
+}
+
-+static void virNetworkLoadSuseNetworks(virConnectPtr conn,
-+ virNetworkObjListPtr nets)
++void virNetworkLoadSuseNetworks(virNetworkObjListPtr nets)
+{
+ DIR *dir = NULL;
+ struct dirent *de;
+
+ dir = opendir("/sys/class/net");
+ if (dir == NULL)
-+ return;
++ return;
+
+ while ((de = readdir(dir))) {
-+ if (virNetworkIsBridge(de->d_name)) {
-+ virNetworkLoadSuseNet(conn, nets, de->d_name);
-+ }
++ if (virNetworkIsBridge(de->d_name)) {
++ virNetworkLoadSuseNet(nets, de->d_name);
++ }
+ }
+ closedir(dir);
+}
+
- int virNetworkLoadAllConfigs(virConnectPtr conn,
- virNetworkObjListPtr nets,
+ int virNetworkLoadAllConfigs(virNetworkObjListPtr nets,
const char *configDir,
-@@ -902,6 +1033,7 @@ int virNetworkLoadAllConfigs(virConnectP
+ const char *autostartDir)
+@@ -882,6 +1011,7 @@ int virNetworkLoadAllConfigs(virNetworkO
closedir(dir);
-+ virNetworkLoadSuseNetworks(conn, nets);
++ virNetworkLoadSuseNetworks(nets);
return 0;
}
-Index: libvirt-0.7.5/src/conf/network_conf.h
+Index: libvirt-0.7.7/src/conf/network_conf.h
===================================================================
---- libvirt-0.7.5.orig/src/conf/network_conf.h
-+++ libvirt-0.7.5/src/conf/network_conf.h
+--- libvirt-0.7.7.orig/src/conf/network_conf.h
++++ libvirt-0.7.7/src/conf/network_conf.h
@@ -94,6 +94,7 @@ struct _virNetworkObj {
unsigned int active : 1;
unsigned int autostart : 1;
unsigned int persistent : 1;
-+ unsigned int readonly : 1;
++ unsigned int suse : 1;
virNetworkDefPtr def; /* The current definition */
virNetworkDefPtr newDef; /* New definition to activate at shutdown */
-Index: libvirt-0.7.5/src/network/bridge_driver.c
+@@ -172,4 +173,7 @@ int virNetworkSetBridgeName(const virNet
+ void virNetworkObjLock(virNetworkObjPtr obj);
+ void virNetworkObjUnlock(virNetworkObjPtr obj);
+
++int virNetworkIsBridge(const char *name);
++void virNetworkLoadSuseNetworks(virNetworkObjListPtr nets);
++
+ #endif /* __NETWORK_CONF_H__ */
+Index: libvirt-0.7.7/src/network/bridge_driver.c
===================================================================
---- libvirt-0.7.5.orig/src/network/bridge_driver.c
-+++ libvirt-0.7.5/src/network/bridge_driver.c
-@@ -1010,6 +1010,11 @@ static int networkShutdownNetworkDaemon(
+--- libvirt-0.7.7.orig/src/network/bridge_driver.c
++++ libvirt-0.7.7/src/network/bridge_driver.c
+@@ -811,7 +811,8 @@ networkReloadIptablesRules(struct networ
+ for (i = 0 ; i < driver->networks.count ; i++) {
+ virNetworkObjLock(driver->networks.objs[i]);
+
+- if (virNetworkObjIsActive(driver->networks.objs[i])) {
++ if (virNetworkObjIsActive(driver->networks.objs[i]) &&
++ !(driver->networks.objs[i]->suse)) {
+ networkRemoveIptablesRules(driver, driver->networks.objs[i]);
+ if (!networkAddIptablesRules(driver, driver->networks.objs[i])) {
+ /* failed to add but already logged */
+@@ -1003,6 +1004,12 @@ static int networkShutdownNetworkDaemon(
unlink(stateFile);
VIR_FREE(stateFile);
-+ if (network->readonly) {
-+ VIR_WARN("Network '%s' is readonly\n", network->def->name);
++ if (network->suse) {
++ VIR_WARN("Network '%s' is not under libvirt control and will not be "
++ "shutdown\n", network->def->name);
+ return -1;
+ }
+
if (network->dnsmasqPid > 0)
kill(network->dnsmasqPid, SIGTERM);
-@@ -1510,6 +1515,12 @@ static int networkSetAutostart(virNetwor
+@@ -1098,11 +1105,25 @@ static int networkCloseNetwork(virConnec
+ return 0;
+ }
+
++static void networkDriverSuseRefresh(struct network_driver *driver) {
++ int i = 0;
++ virNetworkObjPtr netObj;
++
++ virNetworkLoadSuseNetworks(&driver->networks);
++ while (i < driver->networks.count) {
++ netObj = driver->networks.objs[i];
++ if (netObj->suse && !virNetworkIsBridge(netObj->def->name))
++ virNetworkRemoveInactive(&driver->networks, netObj);
++ i++;
++ }
++}
++
+ static int networkNumNetworks(virConnectPtr conn) {
+ int nactive = 0, i;
+ struct network_driver *driver = conn->networkPrivateData;
+
+ networkDriverLock(driver);
++ networkDriverSuseRefresh(driver);
+ for (i = 0 ; i < driver->networks.count ; i++) {
+ virNetworkObjLock(driver->networks.objs[i]);
+ if (virNetworkObjIsActive(driver->networks.objs[i]))
+@@ -1119,6 +1140,7 @@ static int networkListNetworks(virConnec
+ int got = 0, i;
+
+ networkDriverLock(driver);
++ networkDriverSuseRefresh(driver);
+ for (i = 0 ; i < driver->networks.count && got < nnames ; i++) {
+ virNetworkObjLock(driver->networks.objs[i]);
+ if (virNetworkObjIsActive(driver->networks.objs[i])) {
+@@ -1499,6 +1521,13 @@ static int networkSetAutostart(virNetwor
goto cleanup;
}
-+ if (network->readonly) {
-+ networkReportError(net->conn, NULL, net, VIR_ERR_INTERNAL_ERROR,
-+ ": Network '%s' is readonly", network->def->name);
++ if (network->suse) {
++ networkReportError(VIR_ERR_INTERNAL_ERROR,
++ ": Network '%s' is not under libvirt control",
++ network->def->name);
+ return -1;
+ }
+
autostart = (autostart != 0);
if (network->autostart != autostart) {
+Index: libvirt-0.7.7/src/libvirt_private.syms
+===================================================================
+--- libvirt-0.7.7.orig/src/libvirt_private.syms
++++ libvirt-0.7.7/src/libvirt_private.syms
+@@ -411,6 +411,8 @@ virNetworkSaveConfig;
+ virNetworkSetBridgeName;
+ virNetworkObjLock;
+ virNetworkObjUnlock;
++virNetworkLoadSuseNetworks;
++virNetworkIsBridge;
+
+
+ # nodeinfo.h
++++++ xen-name-for-devid.patch ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -13,10 +13,10 @@
This approach allows removing a disk when domain is inactive. We
obviously can't search xenstore when the domain is inactive.
-Index: libvirt-0.7.6/src/xen/xend_internal.c
+Index: libvirt-0.7.7/src/xen/xend_internal.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xend_internal.c
-+++ libvirt-0.7.6/src/xen/xend_internal.c
+--- libvirt-0.7.7.orig/src/xen/xend_internal.c
++++ libvirt-0.7.7/src/xen/xend_internal.c
@@ -93,6 +93,7 @@ xenDaemonFormatSxprOnePCI(virConnectPtr
static int
@@ -25,7 +25,7 @@
virDomainDeviceDefPtr dev,
char *class,
char *ref,
-@@ -4215,7 +4216,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr
+@@ -4212,7 +4213,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr
sexpr = virBufferContentAndReset(&buf);
@@ -34,7 +34,7 @@
/* device doesn't exist, define it */
ret = xend_op(domain->conn, domain->name, "op", "device_create",
"config", sexpr, NULL);
-@@ -4310,7 +4311,7 @@ xenDaemonDetachDeviceFlags(virDomainPtr
+@@ -4306,7 +4307,7 @@ xenDaemonDetachDeviceFlags(virDomainPtr
def, xml, VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -43,7 +43,7 @@
goto cleanup;
if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
-@@ -6052,6 +6053,7 @@ error:
+@@ -6060,6 +6061,7 @@ error:
*/
static int
virDomainXMLDevID(virDomainPtr domain,
@@ -51,7 +51,7 @@
virDomainDeviceDefPtr dev,
char *class,
char *ref,
-@@ -6060,27 +6062,33 @@ virDomainXMLDevID(virDomainPtr domain,
+@@ -6068,27 +6070,33 @@ virDomainXMLDevID(virDomainPtr domain,
xenUnifiedPrivatePtr priv = domain->conn->privateData;
char *xref;
char *tmp;
++++++ xen-pv-cdrom.patch ++++++
--- /var/tmp/diff_new_pack.5iM9Ap/_old 2010-03-22 17:05:40.000000000 +0100
+++ /var/tmp/diff_new_pack.5iM9Ap/_new 2010-03-22 17:05:40.000000000 +0100
@@ -1,8 +1,8 @@
-Index: libvirt-0.7.6/src/xen/xend_internal.c
+Index: libvirt-0.7.7/src/xen/xend_internal.c
===================================================================
---- libvirt-0.7.6.orig/src/xen/xend_internal.c
-+++ libvirt-0.7.6/src/xen/xend_internal.c
-@@ -5479,7 +5479,10 @@ xenDaemonFormatSxprDisk(virConnectPtr co
+--- libvirt-0.7.7.orig/src/xen/xend_internal.c
++++ libvirt-0.7.7/src/xen/xend_internal.c
+@@ -5475,7 +5475,10 @@ xenDaemonFormatSxprDisk(virConnectPtr co
} else if (def->device == VIR_DOMAIN_DISK_DEVICE_CDROM) {
virBufferVSprintf(buf, "(dev '%s:cdrom')", def->dst);
} else {
++++++ xen-tap2-support.patch ++++++
Index: libvirt-0.7.6/src/xen/xend_internal.c
===================================================================
--- libvirt-0.7.6.orig/src/xen/xend_internal.c
+++ libvirt-0.7.6/src/xen/xend_internal.c
@@ -1606,7 +1606,8 @@ xenDaemonParseSxprDisks(virConnectPtr co
but blktap disks ended up in a differently named
(device (tap ....)) block.... */
if (sexpr_lookup(node, "device/vbd") ||
- sexpr_lookup(node, "device/tap")) {
+ sexpr_lookup(node, "device/tap") ||
+ sexpr_lookup(node, "device/tap2")) {
char *offset;
const char *src = NULL;
const char *dst = NULL;
@@ -1617,10 +1618,14 @@ xenDaemonParseSxprDisks(virConnectPtr co
src = sexpr_node(node, "device/vbd/uname");
dst = sexpr_node(node, "device/vbd/dev");
mode = sexpr_node(node, "device/vbd/mode");
- } else {
+ } else if (sexpr_lookup(node, "device/tap")) {
src = sexpr_node(node, "device/tap/uname");
dst = sexpr_node(node, "device/tap/dev");
mode = sexpr_node(node, "device/tap/mode");
+ } else {
+ src = sexpr_node(node, "device/tap2/uname");
+ dst = sexpr_node(node, "device/tap2/dev");
+ mode = sexpr_node(node, "device/tap2/mode");
}
if (VIR_ALLOC(disk) < 0)
++++++ xend-disk-order.patch ++++++
Index: libvirt-0.7.6/src/xen/xend_internal.c
===================================================================
--- libvirt-0.7.6.orig/src/xen/xend_internal.c
+++ libvirt-0.7.6/src/xen/xend_internal.c
@@ -1612,20 +1612,24 @@ xenDaemonParseSxprDisks(virConnectPtr co
const char *src = NULL;
const char *dst = NULL;
const char *mode = NULL;
+ int bootable;
/* Again dealing with (vbd...) vs (tap ...) differences */
if (sexpr_lookup(node, "device/vbd")) {
src = sexpr_node(node, "device/vbd/uname");
dst = sexpr_node(node, "device/vbd/dev");
mode = sexpr_node(node, "device/vbd/mode");
+ bootable = sexpr_int(node, "device/vbd/bootable");
} else if (sexpr_lookup(node, "device/tap")) {
src = sexpr_node(node, "device/tap/uname");
dst = sexpr_node(node, "device/tap/dev");
mode = sexpr_node(node, "device/tap/mode");
+ bootable = sexpr_int(node, "device/tap/bootable");
} else {
src = sexpr_node(node, "device/tap2/uname");
dst = sexpr_node(node, "device/tap2/dev");
mode = sexpr_node(node, "device/tap2/mode");
+ bootable = sexpr_int(node, "device/tap2/bootable");
}
if (VIR_ALLOC(disk) < 0)
@@ -1749,8 +1753,13 @@ xenDaemonParseSxprDisks(virConnectPtr co
if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0)
goto no_memory;
-
- def->disks[def->ndisks++] = disk;
+
+ if (bootable == 1 && def->ndisks > 0) {
+ memmove(def->disks + 1, def->disks, sizeof(def->disks) * def->ndisks);
+ def->disks[0] = disk;
+ def->ndisks++;
+ } else
+ def->disks[def->ndisks++] = disk;
disk = NULL;
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org