Hello community, here is the log from the commit of package libvirt for openSUSE:Factory checked in at Fri Jan 8 01:37:02 CET 2010. -------- --- libvirt/libvirt.changes 2009-12-07 23:07:57.000000000 +0100 +++ /mounts/work_src_done/STABLE/libvirt/libvirt.changes 2010-01-07 02:07:07.000000000 +0100 @@ -1,0 +2,28 @@ +Wed Jan 6 18:02:00 MST 2010 - jfehlig@novell.com + +- Fix freeing of uninitialized pointer when using HAL in + node device driver + node-dev-free.patch + +------------------------------------------------------------------- +Mon Jan 4 14:14:41 MST 2010 - jfehlig@novell.com + +- Require virt-utils package for common tools such as qemu-img + +------------------------------------------------------------------- +Tue Dec 29 10:26:55 MST 2009 - jfehlig@novell.com + +- Updated to version 0.7.5 + - Add new API virDomainMemoryStats to header and drivers + - Public API and domain extension for CPU flags + - expose SR IOV physical/virtual function relationships + - Support for JSON mode monitor [deactivated] + - Support for interface model='netfront' + - vbox: Add support for version 3.1 + - Support QEMU's virtual FAT block device driver + - lots of improvements and bug fixes +- Fix libvirt xen hypervisor driver to work with domctl interface + version 6 + xen-shr-pages.patch + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- libvirt-0.7.4.tar.bz2 xen-list-defined.patch xend-description-tag.patch New: ---- libvirt-0.7.5.tar.bz2 node-dev-free.patch xen-shr-pages.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libvirt.spec ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:42.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:42.000000000 +0100 @@ -1,7 +1,7 @@ # -# spec file for package libvirt (Version 0.7.4) +# spec file for package libvirt (Version 0.7.5) # -# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,24 +18,71 @@ # norootforbuild %define with_xen 1 -%define with_lxc 0 -%define with_selinux 0 +%define with_qemu 1 +%define with_lxc 1 +%define with_openvz 1 +%define with_vbox 1 +%define with_uml 0 +%define with_one 0 +# hypervisor drivers that use a native remote protocol %define with_phyp 0 +%define with_esx 0 +# host drivers +%define with_network 1 +%define with_storage_fs 1 +%define with_storage_lvm 1 +%define with_storage_iscsi 1 +%define with_storage_disk 1 +%define with_storage_mpath 1 +%define with_numactl 1 +%define with_selinux 1 +%define with_apparmor 0 +# options +%define with_capng 0 +%define with_netcf 0 +%define with_udev 0 +%define with_hal 0 +%define with_yajl 0 # Xen is available only on i386 x86_64 %ifnarch %ix86 x86_64 %define with_xen 0 %endif -%if 0%{?suse_version} > 1100 -%define with_lxc 1 -%define with_selinux 1 +# LXC and selinux are not available on anything < openSUSE 11.1 +%if 0%{?suse_version} < 1110 +%define with_lxc 0 +%define with_selinux 0 %endif -# Build phyp backend for IBM Power systems +# Enable phyp driver for IBM Power systems %ifarch ppc64 %define with_phyp 1 %endif +# numactl only on x86_64 and ia64 +%ifnarch x86_64 ia64 +%define with_numactl 0 +%endif +# SLES doesn't contain OpenVZ, VBox, UML, OpenNebula, or ESX +%if 0%{?sles_version} +%define with_openvz 0 +%define with_vbox 0 +%define with_uml 0 +%define with_one 0 +%define with_esx 0 +%endif +%if 0%{?suse_version} > 1110 +%define with_udev 1 +%else +%define with_hal 1 +%endif Name: libvirt -BuildRequires: bridge-utils cyrus-sasl-devel device-mapper-devel fdupes gettext gnutls-devel hal-devel iptables-devel libxml2-devel lvm2 ncurses-devel parted-devel pkg-config python-devel python-xml readline-devel util-linux xhtml-dtd +BuildRequires: bridge-utils cyrus-sasl-devel device-mapper-devel fdupes gettext gnutls-devel iptables-devel libxml2-devel lvm2 ncurses-devel parted-devel pkg-config python-devel python-xml readline-devel util-linux xhtml-dtd +%if %{with_hal} +BuildRequires: hal-devel +%endif +%if %{with_udev} +BuildRequires: libudev-devel >= 145 +BuildRequires: libpciaccess0-devel >= 0.10.9 +%endif %if %{with_xen} BuildRequires: xen-devel %endif @@ -47,7 +94,7 @@ %if %{with_selinux} BuildRequires: libselinux-devel %endif -%ifarch x86_64 ia64 +%if %{with_numactl} BuildRequires: libnuma-devel %endif %if 0%{?suse_version} > 1110 @@ -64,25 +111,24 @@ License: LGPLv2.1+ Group: Development/Libraries/C and C++ AutoReqProv: yes -Version: 0.7.4 +Version: 0.7.5 Release: 1 Summary: A C toolkit to interract with the virtualization capabilities of Linux -Requires: readline -Requires: ncurses +# The client side, i.e. shared libs and virsh are in a subpackage +Requires: libvirt-client = %{version}-%{release} Requires: bridge-utils Requires: iptables -Requires: cyrus-sasl Requires: lvm2 Requires: parted -#Requires: /usr/bin/qemu-img -Recommends: cyrus-sasl-digestmd5 +Requires: virt-utils Recommends: logrotate Requires: dnsmasq Requires: PolicyKit >= 0.6 -Requires: socat Requires: open-iscsi Requires: nfs-client +%if %{with_hal} Requires: hal +%endif %if 0%{?suse_version} > 1110 Requires: polkit >= 0.9 %else @@ -91,9 +137,9 @@ Source0: %{name}-%{version}.tar.bz2 Source1: libvirtd.init # Upstream patches -Patch0: xen-list-defined.patch -Patch1: detach-disk.patch -Patch2: xend-description-tag.patch +Patch0: detach-disk.patch +Patch1: xen-shr-pages.patch +Patch2: node-dev-free.patch # Need to go upstream Patch100: socat.patch Patch101: clone.patch @@ -106,13 +152,37 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build %description -Libvirt is a C toolkit to interract with the virtualization -capabilities Linux. Virtualization of the Linux Operating System means -the ability to run multiple instances of Operating Systems concurently +Libvirt is a C toolkit to interact with the virtualization +capabilities of Linux. Virtualization of the Linux Operating System means +the ability to run multiple instances of Operating Systems concurrently on a single hardware system where the basic resources are driven by a Linux instance. The library aims to provide long term stable C API -initially for the Xen paravirtualization but should be able to -integrate other virtualization mechanisms if needed. +to interact with Linux virtualization technologies. + + + +Authors: +-------- + Daniel Veillard <veillard@redhat.com> + Karel Zak <kzak@redhat.com> + +%package client +License: LGPLv2.1+ +Summary: Client side library and utilities of the libvirt library +Group: Development/Libraries/C and C++ +Requires: readline +Requires: ncurses +# So remote clients can access libvirt over SSH tunnel +# (client invokes 'socat' against the UNIX socket on the server) +Requires: socat +Requires: cyrus-sasl +Recommends: cyrus-sasl-digestmd5 + +%description client +Libvirt is a C toolkit to interract with the virtualization +capabilities of Linux. The libvirt-client package contains shared +libraries and client binaries needed to access the virtualization +capabilities of recent versions of Linux (and other OSes). @@ -128,17 +198,13 @@ Requires: %{name} = %{version} libxml2-devel %if %{with_xen} Requires: xen-devel -Requires: pkg-config %endif +Requires: pkg-config %description devel Libvirt is a C toolkit to interract with the virtualization -capabilities Linux. Virtualization of the Linux Operating System means -the ability to run multiple instances of Operating Systems concurently -on a single hardware system where the basic resources are driven by a -Linux instance. The library aims to provide long term stable C API -initially for the Xen paravirtualization but should be able to -integrate other virtualization mechanisms if needed. +capabilities of Linux. The libvirt-devel package contains headers +and libraries needed for developing libvirt applications. @@ -155,12 +221,8 @@ %description doc Libvirt is a C toolkit to interract with the virtualization -capabilities Linux. Virtualization of the Linux Operating System means -the ability to run multiple instances of Operating Systems concurently -on a single hardware system where the basic resources are driven by a -Linux instance. The library aims to provide long term stable C API -initially for the Xen paravirtualization but should be able to -integrate other virtualization mechanisms if needed. +capabilities of Linux. The libvirt-doc packages contains documentation +for the libvirt API and tools. @@ -178,12 +240,8 @@ %description python Libvirt is a C toolkit to interract with the virtualization -capabilities Linux. Virtualization of the Linux Operating System means -the ability to run multiple instances of Operating Systems concurently -on a single hardware system where the basic resources are driven by a -Linux instance. The library aims to provide long term stable C API -initially for the Xen paravirtualization but should be able to -integrate other virtualization mechanisms if needed. +capabilities of Linux. The libvirt-python package provides python +bindings for the libvirt C API. @@ -209,24 +267,80 @@ %if ! %{with_xen} %define _without_xen --without-xen %endif +%if ! %{with_qemu} +%define _without_qemu --without-qemu +%endif %if ! %{with_lxc} %define _without_lxc --without-lxc %endif -%if %{with_selinux} -%define _with_selinux --with-selinux +%if ! %{with_openvz} +%define _without_openvz --without-openvz +%endif +%if ! %{with_vbox} +%define _without_vbox --without-vbox +%endif +%if ! %{with_uml} +%define _without_uml --without-uml +%endif +%if ! %{with_one} +%define _without_one --without-one +%endif +%if ! %{with_phyp} +%define _without_phyp --without-phyp +%endif +%if ! %{with_esx} +%define _without_esx --without-esx +%endif +%if ! %{with_numactl} +%define _without_numactl --without-numactl +%endif +%if ! %{with_selinux} +%define _without_selinux --without-selinux +%endif +%if ! %{with_apparmor} +%define _without_apparmor --without-apparmor +%endif +%if ! %{with_capng} +%define _without_capng --without-capng +%endif +%if ! %{with_netcf} +%define _without_netcf --without-netcf +%endif +%if ! %{with_hal} +%define _without_hal --without-hal +%endif +%if ! %{with_udev} +%define _without_udev --without-udev +%endif +%if ! %{with_yajl} +%define _without_yajl --without-yajl %endif autoreconf -f -i export CFLAGS="$RPM_OPT_FLAGS" %configure --disable-static --with-pic \ %{?_without_xen} \ + %{?_without_qemu} \ %{?_without_lxc} \ + %{?_without_openvz} \ + %{?_without_vbox} \ + %{?_without_uml} \ + %{?_without_one} \ + %{?_without_phyp} \ + %{?_without_esx} \ + %{?_without_numactl} \ %{?_with_selinux} \ + %{?_without_capng} \ + %{?_without_netcf} \ + %{?_without_selinux} \ + %{?_without_apparmor} \ + %{?_without_hal} \ + %{?_without_udev} \ + %{?_without_yajl} \ + --without-xen-proxy \ --libexecdir=%{_libdir}/%{name} \ --with-init-script=none \ --with-remote-pid-file=%{_localstatedir}/run/libvirtd.pid \ - --with-xen-proxy=no \ ac_cv_path_DNSMASQ=/usr/sbin/dnsmasq \ - ac_cv_path_QEMU_IMG=/usr/bin/qemu-img-xen \ ac_cv_path_ISCSIADM=/sbin/iscsiadm \ ac_cv_path_MODPROBE=/sbin/modprobe \ ac_cv_path_UDEVADM=/sbin/udevadm \ @@ -244,6 +358,14 @@ mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/run/libvirt mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/libvirt rm $RPM_BUILD_ROOT%{_libdir}/*.*a $RPM_BUILD_ROOT%{py_sitedir}/*.*a +%if ! %{with_lxc} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug +%endif +%if ! %{with_qemu} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug +%endif ln_dupes() { target="" @@ -269,7 +391,11 @@ %clean rm -rf $RPM_BUILD_ROOT -%post -p /sbin/ldconfig +%post +/sbin/ldconfig +%if 0%{?sles_version} +%{fillup_and_insserv -f -y libvirtd} +%endif %preun %stop_on_removal libvirtd @@ -279,49 +405,84 @@ %restart_on_update libvirtd %insserv_cleanup -%files -f %{name}.lang +%post client -p /sbin/ldconfig + +%postun client -p /sbin/ldconfig + +%files %defattr(-, root, root) -%{_bindir}/virsh -%{_bindir}/virt-xml-validate -%{_bindir}/virt-pki-validate %{_sbindir}/libvirtd -%doc %dir %{_docdir}/%{name} -%doc %{_docdir}/%{name}/[CNRT]* -%doc %{_docdir}/%{name}/AUTHORS -%doc %{_mandir}/man1/virsh.1* -%doc %{_mandir}/man1/virt-xml-validate.1* -%doc %{_mandir}/man1/virt-pki-validate.1* -%{_libdir}/*.so.* %dir %{_libdir}/%{name} -%if 0%{?suse_version} > 1030 -%{_libdir}/%{name}/libvirt_parthelper -%endif -%if %{with_lxc} -%attr(0755, root, root) %{_libdir}/%{name}/libvirt_lxc -%endif %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart -%if %{with_lxc} -%config %{_sysconfdir}/libvirt/lxc.conf -%endif -%config %{_sysconfdir}/libvirt/qemu/networks/default.xml -%config %{_sysconfdir}/logrotate.d/libvirtd -%dir /%{_localstatedir}/run/libvirt/ -%dir /%{_localstatedir}/lib/libvirt/ %config /etc/init.d/libvirtd %{_sbindir}/rclibvirtd %config %{_sysconfdir}/libvirt/libvirtd.conf -%config %{_sysconfdir}/libvirt/qemu.conf -%config %{_sysconfdir}/sasl2/libvirt.conf +%config %{_sysconfdir}/logrotate.d/libvirtd +%config %{_sysconfdir}/libvirt/qemu/networks/default.xml +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ +%dir %{_localstatedir}/run/libvirt/ +%dir %{_localstatedir}/lib/libvirt/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/images/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/boot/ +%dir %attr(0700, root, root) %{_localstatedir}/cache/libvirt/ +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ %if 0%{?suse_version} > 1110 %{_datadir}/polkit-1/actions/org.libvirt.unix.policy %else %{_datadir}/PolicyKit/policy/org.libvirt.unix.policy %endif -%{_datadir}/libvirt %{_datadir}/augeas +%if %{with_qemu} +%config %{_sysconfdir}/libvirt/qemu.conf +%dir %attr(0700, root, root) %{_localstatedir}/run/libvirt/qemu/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/qemu/ +%dir %attr(0700, root, root) %{_localstatedir}/cache/libvirt/qemu/ +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/ +%endif +%if %{with_lxc} +%config %{_sysconfdir}/libvirt/lxc.conf +%dir %attr(0700, root, root) %{_localstatedir}/run/libvirt/lxc/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/ +%attr(0755, root, root) %{_libdir}/%{name}/libvirt_lxc +%endif +%if %{with_uml} +%dir %attr(0700, root, root) %{_localstatedir}/run/libvirt/uml/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/uml/ +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/uml/ +%endif +%if 0%{with_storage_disk} +%{_libdir}/%{name}/libvirt_parthelper +%endif + +%files client -f %{name}.lang +%defattr(-, root, root) +%doc %dir %{_docdir}/%{name} +%doc %{_docdir}/%{name}/[CNRT]* +%doc %{_docdir}/%{name}/AUTHORS +%doc %{_mandir}/man1/virsh.1* +%doc %{_mandir}/man1/virt-xml-validate.1* +%doc %{_mandir}/man1/virt-pki-validate.1* +%{_bindir}/virsh +%{_bindir}/virt-xml-validate +%{_bindir}/virt-pki-validate +%{_libdir}/lib*.so.* +%dir %{_datadir}/libvirt/ +%dir %{_datadir}/libvirt/schemas/ +%{_datadir}/libvirt/schemas/domain.rng +%{_datadir}/libvirt/schemas/network.rng +%{_datadir}/libvirt/schemas/storagepool.rng +%{_datadir}/libvirt/schemas/storagevol.rng +%{_datadir}/libvirt/schemas/nodedev.rng +%{_datadir}/libvirt/schemas/capability.rng +%{_datadir}/libvirt/schemas/interface.rng +%{_datadir}/libvirt/schemas/secret.rng +%{_datadir}/libvirt/schemas/storageencryption.rng +%{_datadir}/libvirt/cpu_map.xml +%config %{_sysconfdir}/sasl2/libvirt.conf %files devel %defattr(-, root, root) @@ -341,6 +502,5 @@ %doc %{_docdir}/%{name}-python %{py_sitedir}/libvirt.py* %{py_sitedir}/libvirtmod* -#%attr(0755, root, root) %{_libdir}/%{name}/virt-aa-helper %changelog ++++++ detach-disk.patch ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:42.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:42.000000000 +0100 @@ -1,8 +1,8 @@ -Index: libvirt-0.7.4/src/xen/xend_internal.c +Index: libvirt-0.7.5/src/xen/xend_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xend_internal.c -+++ libvirt-0.7.4/src/xen/xend_internal.c -@@ -4109,13 +4109,12 @@ xenDaemonAttachDevice(virDomainPtr domai +--- libvirt-0.7.5.orig/src/xen/xend_internal.c ++++ libvirt-0.7.5/src/xen/xend_internal.c +@@ -4123,13 +4123,12 @@ xenDaemonAttachDevice(virDomainPtr domai priv = (xenUnifiedPrivatePtr) domain->conn->privateData; @@ -21,7 +21,7 @@ if (!(def = xenDaemonDomainFetch(domain->conn, domain->id, domain->name, -@@ -4213,12 +4212,11 @@ xenDaemonDetachDevice(virDomainPtr domai +@@ -4229,12 +4228,11 @@ xenDaemonDetachDevice(virDomainPtr domai priv = (xenUnifiedPrivatePtr) domain->conn->privateData; @@ -38,11 +38,11 @@ if (!(def = xenDaemonDomainFetch(domain->conn, domain->id, -Index: libvirt-0.7.4/src/libvirt.c +Index: libvirt-0.7.5/src/libvirt.c =================================================================== ---- libvirt-0.7.4.orig/src/libvirt.c -+++ libvirt-0.7.4/src/libvirt.c -@@ -4919,7 +4919,8 @@ error: +--- libvirt-0.7.5.orig/src/libvirt.c ++++ libvirt-0.7.5/src/libvirt.c +@@ -5066,7 +5066,8 @@ error: * @domain: pointer to domain object * @xml: pointer to XML description of one device * @@ -52,7 +52,7 @@ * * Returns 0 in case of success, -1 in case of failure. */ -@@ -4962,7 +4963,8 @@ error: +@@ -5109,7 +5110,8 @@ error: * @domain: pointer to domain object * @xml: pointer to XML description of one device * ++++++ libvirt-0.7.4.tar.bz2 -> libvirt-0.7.5.tar.bz2 ++++++ ++++ 984762 lines of diff (skipped) ++++++ libvirtd-defaults.patch ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:49.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:49.000000000 +0100 @@ -1,7 +1,7 @@ -Index: libvirt-0.7.2/daemon/libvirtd.conf +Index: libvirt-0.7.5/daemon/libvirtd.conf =================================================================== ---- libvirt-0.7.2.orig/daemon/libvirtd.conf -+++ libvirt-0.7.2/daemon/libvirtd.conf +--- libvirt-0.7.5.orig/daemon/libvirtd.conf ++++ libvirt-0.7.5/daemon/libvirtd.conf @@ -18,8 +18,8 @@ # It is necessary to setup a CA and issue server certificates before # using this capability. @@ -28,11 +28,11 @@ # Override the default mDNS advertizement name. This must be # unique on the immediate broadcast network. -Index: libvirt-0.7.2/daemon/libvirtd.c +Index: libvirt-0.7.5/daemon/libvirtd.c =================================================================== ---- libvirt-0.7.2.orig/daemon/libvirtd.c -+++ libvirt-0.7.2/daemon/libvirtd.c -@@ -135,7 +135,7 @@ static int sigwrite = -1; /* Signa +--- libvirt-0.7.5.orig/daemon/libvirtd.c ++++ libvirt-0.7.5/daemon/libvirtd.c +@@ -137,7 +137,7 @@ static int sigwrite = -1; /* Signa static int ipsock = 0; /* -l Listen for TCP/IP */ /* Defaults for configuration file elements */ @@ -41,7 +41,7 @@ static int listen_tcp = 0; static char *listen_addr = (char *) LIBVIRTD_LISTEN_ADDR; static char *tls_port = (char *) LIBVIRTD_TLS_PORT; -@@ -157,7 +157,7 @@ static int auth_tcp = REMOTE_AUTH_NONE; +@@ -159,7 +159,7 @@ static int auth_tcp = REMOTE_AUTH_NONE; #endif static int auth_tls = REMOTE_AUTH_NONE; ++++++ migrate-params.patch ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:49.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:49.000000000 +0100 @@ -1,8 +1,8 @@ -Index: libvirt-0.7.4/src/xen/xend_internal.c +Index: libvirt-0.7.5/src/xen/xend_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xend_internal.c -+++ libvirt-0.7.4/src/xen/xend_internal.c -@@ -4517,6 +4517,8 @@ xenDaemonDomainMigratePerform (virDomain +--- libvirt-0.7.5.orig/src/xen/xend_internal.c ++++ libvirt-0.7.5/src/xen/xend_internal.c +@@ -4559,6 +4559,8 @@ xenDaemonDomainMigratePerform (virDomain "node", "-1", "ssl", "0", "resource", "0", /* required, xend ignores it */ ++++++ node-dev-free.patch ++++++ This invalid free results in heap corruption. Some symptoms I saw because of this were libvirtd crashing and virt-manager hanging while trying to enumerate devices. --- src/node_device/node_device_driver.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: libvirt-0.7.5/src/node_device/node_device_driver.c =================================================================== --- libvirt-0.7.5.orig/src/node_device/node_device_driver.c +++ libvirt-0.7.5/src/node_device/node_device_driver.c @@ -78,7 +78,7 @@ static int update_driver_name(virConnect virNodeDeviceObjPtr dev) { char *driver_link = NULL; - char *devpath; + char *devpath = NULL; char *p; int ret = -1; @@ -114,7 +114,7 @@ static int update_driver_name(virConnect cleanup: VIR_FREE(driver_link); - free(devpath); + VIR_FREE(devpath); return ret; } #else ++++++ snapshots.patch ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:49.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:49.000000000 +0100 @@ -1,8 +1,8 @@ -Index: libvirt-0.7.4/include/libvirt/libvirt.h.in +Index: libvirt-0.7.5/include/libvirt/libvirt.h.in =================================================================== ---- libvirt-0.7.4.orig/include/libvirt/libvirt.h.in -+++ libvirt-0.7.4/include/libvirt/libvirt.h.in -@@ -565,6 +565,21 @@ int virDomainRestore +--- libvirt-0.7.5.orig/include/libvirt/libvirt.h.in ++++ libvirt-0.7.5/include/libvirt/libvirt.h.in +@@ -621,6 +621,21 @@ int virDomainRestore const char *from); /* @@ -24,11 +24,11 @@ * Domain core dump */ int virDomainCoreDump (virDomainPtr domain, -Index: libvirt-0.7.4/src/libvirt.c +Index: libvirt-0.7.5/src/libvirt.c =================================================================== ---- libvirt-0.7.4.orig/src/libvirt.c -+++ libvirt-0.7.4/src/libvirt.c -@@ -2281,6 +2281,166 @@ error: +--- libvirt-0.7.5.orig/src/libvirt.c ++++ libvirt-0.7.5/src/libvirt.c +@@ -2339,6 +2339,166 @@ error: } /** @@ -195,10 +195,10 @@ * virDomainCoreDump: * @domain: a domain object * @to: path for the core file -Index: libvirt-0.7.4/src/driver.h +Index: libvirt-0.7.5/src/driver.h =================================================================== ---- libvirt-0.7.4.orig/src/driver.h -+++ libvirt-0.7.4/src/driver.h +--- libvirt-0.7.5.orig/src/driver.h ++++ libvirt-0.7.5/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); -@@ -435,6 +450,11 @@ struct _virDriver { - virDrvConnectIsSecure isSecure; +@@ -448,6 +463,11 @@ struct _virDriver { virDrvDomainIsActive domainIsActive; virDrvDomainIsPersistent domainIsPersistent; + virDrvCPUCompare cpuCompare; + virDrvDomainSnapshotCreate domainSnapshotCreate; + virDrvDomainSnapshotApply domainSnapshotApply; + virDrvDomainSnapshotDelete domainSnapshotDelete; @@ -233,10 +233,10 @@ }; typedef int -Index: libvirt-0.7.4/src/xen/xen_driver.c +Index: libvirt-0.7.5/src/xen/xen_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xen_driver.c -+++ libvirt-0.7.4/src/xen/xen_driver.c +--- libvirt-0.7.5.orig/src/xen/xen_driver.c ++++ libvirt-0.7.5/src/xen/xen_driver.c @@ -1052,6 +1052,81 @@ xenUnifiedDomainRestore (virConnectPtr c } @@ -319,22 +319,22 @@ xenUnifiedDomainCoreDump (virDomainPtr dom, const char *to, int flags) { GET_PRIVATE(dom->conn); -@@ -1860,6 +1935,11 @@ static virDriver xenUnifiedDriver = { - xenUnifiedIsSecure, +@@ -1862,6 +1937,11 @@ static virDriver xenUnifiedDriver = { xenUnifiedDomainIsActive, xenUnifiedDomainisPersistent, -+ xenUnifiedDomainSnapshotCreate, -+ xenUnifiedDomainSnapshotApply, -+ xenUnifiedDomainSnapshotDelete, -+ xenUnifiedDomainNumOfSnapshots, -+ xenUnifiedDomainListSnapshots, + NULL, /* cpuCompare */ ++ xenUnifiedDomainSnapshotCreate, /* domainSnapshotCreate */ ++ xenUnifiedDomainSnapshotApply, /* domainSnapshotApply */ ++ xenUnifiedDomainSnapshotDelete, /* domainSnapshotDelete */ ++ xenUnifiedDomainNumOfSnapshots, /* domainNumOfSnapshots */ ++ xenUnifiedDomainListSnapshots, /* domainListSnapshots */ }; /** -Index: libvirt-0.7.4/src/xen/xen_driver.h +Index: libvirt-0.7.5/src/xen/xen_driver.h =================================================================== ---- libvirt-0.7.4.orig/src/xen/xen_driver.h -+++ libvirt-0.7.4/src/xen/xen_driver.h +--- libvirt-0.7.5.orig/src/xen/xen_driver.h ++++ libvirt-0.7.5/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.4/src/xen/xend_internal.c +Index: libvirt-0.7.5/src/xen/xend_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xend_internal.c -+++ libvirt-0.7.4/src/xen/xend_internal.c +--- libvirt-0.7.5.orig/src/xen/xend_internal.c ++++ libvirt-0.7.5/src/xen/xend_internal.c @@ -53,6 +53,12 @@ #ifndef PROXY @@ -364,7 +364,7 @@ /* * The number of Xen scheduler parameters */ -@@ -3271,6 +3277,87 @@ xenDaemonDomainRestore(virConnectPtr con +@@ -3282,6 +3288,87 @@ xenDaemonDomainRestore(virConnectPtr con } return xend_op(conn, "", "op", "restore", "file", filename, NULL); } @@ -452,7 +452,7 @@ #endif /* !PROXY */ /** -@@ -5123,6 +5210,11 @@ struct xenUnifiedDriver xenDaemonDriver +@@ -5165,6 +5252,11 @@ struct xenUnifiedDriver xenDaemonDriver xenDaemonGetSchedulerType, /* domainGetSchedulerType */ xenDaemonGetSchedulerParameters, /* domainGetSchedulerParameters */ xenDaemonSetSchedulerParameters, /* domainSetSchedulerParameters */ @@ -464,10 +464,10 @@ }; /************************************************************************ -Index: libvirt-0.7.4/src/xen/proxy_internal.c +Index: libvirt-0.7.5/src/xen/proxy_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/proxy_internal.c -+++ libvirt-0.7.4/src/xen/proxy_internal.c +--- libvirt-0.7.5.orig/src/xen/proxy_internal.c ++++ libvirt-0.7.5/src/xen/proxy_internal.c @@ -83,6 +83,11 @@ struct xenUnifiedDriver xenProxyDriver = NULL, /* domainGetSchedulerType */ NULL, /* domainGetSchedulerParameters */ @@ -480,11 +480,11 @@ }; -Index: libvirt-0.7.4/src/xen/xen_hypervisor.c +Index: libvirt-0.7.5/src/xen/xen_hypervisor.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xen_hypervisor.c -+++ libvirt-0.7.4/src/xen/xen_hypervisor.c -@@ -750,6 +750,11 @@ struct xenUnifiedDriver xenHypervisorDri +--- libvirt-0.7.5.orig/src/xen/xen_hypervisor.c ++++ libvirt-0.7.5/src/xen/xen_hypervisor.c +@@ -800,6 +800,11 @@ struct xenUnifiedDriver xenHypervisorDri xenHypervisorGetSchedulerType, /* domainGetSchedulerType */ xenHypervisorGetSchedulerParameters, /* domainGetSchedulerParameters */ xenHypervisorSetSchedulerParameters, /* domainSetSchedulerParameters */ @@ -496,10 +496,10 @@ }; #endif /* !PROXY */ -Index: libvirt-0.7.4/src/xen/xm_internal.c +Index: libvirt-0.7.5/src/xen/xm_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xm_internal.c -+++ libvirt-0.7.4/src/xen/xm_internal.c +--- libvirt-0.7.5.orig/src/xen/xm_internal.c ++++ libvirt-0.7.5/src/xen/xm_internal.c @@ -116,6 +116,11 @@ struct xenUnifiedDriver xenXMDriver = { NULL, /* domainGetSchedulerType */ NULL, /* domainGetSchedulerParameters */ @@ -512,10 +512,10 @@ }; #define xenXMError(conn, code, fmt...) \ -Index: libvirt-0.7.4/src/xen/xs_internal.c +Index: libvirt-0.7.5/src/xen/xs_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xs_internal.c -+++ libvirt-0.7.4/src/xen/xs_internal.c +--- libvirt-0.7.5.orig/src/xen/xs_internal.c ++++ libvirt-0.7.5/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.4/tools/virsh.c +Index: libvirt-0.7.5/tools/virsh.c =================================================================== ---- libvirt-0.7.4.orig/tools/virsh.c -+++ libvirt-0.7.4/tools/virsh.c -@@ -1179,6 +1179,188 @@ cmdSave(vshControl *ctl, const vshCmd *c +--- libvirt-0.7.5.orig/tools/virsh.c ++++ libvirt-0.7.5/tools/virsh.c +@@ -1233,6 +1233,188 @@ cmdSave(vshControl *ctl, const vshCmd *c } /* @@ -721,7 +721,7 @@ * "schedinfo" command */ static const vshCmdInfo info_schedinfo[] = { -@@ -7298,6 +7480,12 @@ static const vshCmdDef commands[] = { +@@ -7431,6 +7613,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.4/src/lxc/lxc_driver.c +Index: libvirt-0.7.5/src/lxc/lxc_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/lxc/lxc_driver.c -+++ libvirt-0.7.4/src/lxc/lxc_driver.c -@@ -2404,6 +2404,11 @@ static virDriver lxcDriver = { - lxcIsSecure, +--- libvirt-0.7.5.orig/src/lxc/lxc_driver.c ++++ libvirt-0.7.5/src/lxc/lxc_driver.c +@@ -2456,6 +2456,11 @@ static virDriver lxcDriver = { lxcDomainIsActive, lxcDomainIsPersistent, + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -750,14 +750,14 @@ }; static virStateDriver lxcStateDriver = { -Index: libvirt-0.7.4/src/openvz/openvz_driver.c +Index: libvirt-0.7.5/src/openvz/openvz_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/openvz/openvz_driver.c -+++ libvirt-0.7.4/src/openvz/openvz_driver.c -@@ -1534,6 +1534,11 @@ static virDriver openvzDriver = { - openvzIsSecure, +--- libvirt-0.7.5.orig/src/openvz/openvz_driver.c ++++ libvirt-0.7.5/src/openvz/openvz_driver.c +@@ -1535,6 +1535,11 @@ static virDriver openvzDriver = { openvzDomainIsActive, openvzDomainIsPersistent, + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -766,14 +766,14 @@ }; int openvzRegister(void) { -Index: libvirt-0.7.4/src/qemu/qemu_driver.c +Index: libvirt-0.7.5/src/qemu/qemu_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/qemu/qemu_driver.c -+++ libvirt-0.7.4/src/qemu/qemu_driver.c -@@ -7559,6 +7559,11 @@ static virDriver qemuDriver = { - qemuIsSecure, +--- libvirt-0.7.5.orig/src/qemu/qemu_driver.c ++++ libvirt-0.7.5/src/qemu/qemu_driver.c +@@ -7990,6 +7990,11 @@ static virDriver qemuDriver = { qemuDomainIsActive, qemuDomainIsPersistent, + qemuCPUCompare, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -782,14 +782,14 @@ }; -Index: libvirt-0.7.4/src/esx/esx_driver.c +Index: libvirt-0.7.5/src/esx/esx_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/esx/esx_driver.c -+++ libvirt-0.7.4/src/esx/esx_driver.c -@@ -3425,6 +3425,11 @@ static virDriver esxDriver = { - esxIsSecure, /* isSecure */ +--- libvirt-0.7.5.orig/src/esx/esx_driver.c ++++ libvirt-0.7.5/src/esx/esx_driver.c +@@ -3455,6 +3455,11 @@ static virDriver esxDriver = { esxDomainIsActive, /* domainIsActive */ esxDomainIsPersistent, /* domainIsPersistent */ + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -798,14 +798,14 @@ }; -Index: libvirt-0.7.4/src/test/test_driver.c +Index: libvirt-0.7.5/src/test/test_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/test/test_driver.c -+++ libvirt-0.7.4/src/test/test_driver.c -@@ -5233,6 +5233,11 @@ static virDriver testDriver = { - testIsSecure, /* isEncrypted */ +--- libvirt-0.7.5.orig/src/test/test_driver.c ++++ libvirt-0.7.5/src/test/test_driver.c +@@ -5238,6 +5238,11 @@ static virDriver testDriver = { testDomainIsActive, /* domainIsActive */ testDomainIsPersistent, /* domainIsPersistent */ + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -814,14 +814,14 @@ }; static virNetworkDriver testNetworkDriver = { -Index: libvirt-0.7.4/src/uml/uml_driver.c +Index: libvirt-0.7.5/src/uml/uml_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/uml/uml_driver.c -+++ libvirt-0.7.4/src/uml/uml_driver.c -@@ -1888,6 +1888,11 @@ static virDriver umlDriver = { - umlIsSecure, +--- libvirt-0.7.5.orig/src/uml/uml_driver.c ++++ libvirt-0.7.5/src/uml/uml_driver.c +@@ -1924,6 +1924,11 @@ static virDriver umlDriver = { umlDomainIsActive, umlDomainIsPersistent, + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -830,14 +830,14 @@ }; -Index: libvirt-0.7.4/src/vbox/vbox_tmpl.c +Index: libvirt-0.7.5/src/vbox/vbox_tmpl.c =================================================================== ---- libvirt-0.7.4.orig/src/vbox/vbox_tmpl.c -+++ libvirt-0.7.4/src/vbox/vbox_tmpl.c -@@ -6571,6 +6571,11 @@ virDriver NAME(Driver) = { - vboxIsSecure, +--- libvirt-0.7.5.orig/src/vbox/vbox_tmpl.c ++++ libvirt-0.7.5/src/vbox/vbox_tmpl.c +@@ -7051,6 +7051,11 @@ virDriver NAME(Driver) = { vboxDomainIsActive, vboxDomainIsPersistent, + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -846,14 +846,14 @@ }; virNetworkDriver NAME(NetworkDriver) = { -Index: libvirt-0.7.4/src/opennebula/one_driver.c +Index: libvirt-0.7.5/src/opennebula/one_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/opennebula/one_driver.c -+++ libvirt-0.7.4/src/opennebula/one_driver.c -@@ -781,6 +781,11 @@ static virDriver oneDriver = { - oneIsSecure, +--- libvirt-0.7.5.orig/src/opennebula/one_driver.c ++++ libvirt-0.7.5/src/opennebula/one_driver.c +@@ -783,6 +783,11 @@ static virDriver oneDriver = { NULL, /* domainIsActive */ NULL, /* domainIsPersistent */ + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -862,14 +862,14 @@ }; static virStateDriver oneStateDriver = { -Index: libvirt-0.7.4/src/phyp/phyp_driver.c +Index: libvirt-0.7.5/src/phyp/phyp_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/phyp/phyp_driver.c -+++ libvirt-0.7.4/src/phyp/phyp_driver.c -@@ -1650,6 +1650,11 @@ virDriver phypDriver = { - phypIsSecure, +--- libvirt-0.7.5.orig/src/phyp/phyp_driver.c ++++ libvirt-0.7.5/src/phyp/phyp_driver.c +@@ -1651,6 +1651,11 @@ virDriver phypDriver = { NULL, /* domainIsActive */ NULL, /* domainIsPersistent */ + NULL, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -878,14 +878,14 @@ }; int -Index: libvirt-0.7.4/src/remote/remote_driver.c +Index: libvirt-0.7.5/src/remote/remote_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/remote/remote_driver.c -+++ libvirt-0.7.4/src/remote/remote_driver.c -@@ -8847,6 +8847,11 @@ static virDriver remote_driver = { - remoteIsSecure, /* isSecure */ +--- libvirt-0.7.5.orig/src/remote/remote_driver.c ++++ libvirt-0.7.5/src/remote/remote_driver.c +@@ -8940,6 +8940,11 @@ static virDriver remote_driver = { remoteDomainIsActive, /* domainIsActive */ remoteDomainIsPersistent, /* domainIsPersistent */ + remoteCPUCompare, /* cpuCompare */ + NULL, /* domainSnapshotCreate */ + NULL, /* domainSnapshotApply */ + NULL, /* domainSnapshotDelete */ @@ -894,11 +894,11 @@ }; static virNetworkDriver network_driver = { -Index: libvirt-0.7.4/docs/libvirt-api.xml +Index: libvirt-0.7.5/docs/libvirt-api.xml =================================================================== ---- libvirt-0.7.4.orig/docs/libvirt-api.xml -+++ libvirt-0.7.4/docs/libvirt-api.xml -@@ -271,6 +271,11 @@ +--- libvirt-0.7.5.orig/docs/libvirt-api.xml ++++ libvirt-0.7.5/docs/libvirt-api.xml +@@ -293,6 +293,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'/> -@@ -1878,6 +1883,36 @@ This function may requires privileged ac +@@ -1972,6 +1977,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.4/src/libvirt_public.syms +Index: libvirt-0.7.5/src/libvirt_public.syms =================================================================== ---- libvirt-0.7.4.orig/src/libvirt_public.syms -+++ libvirt-0.7.4/src/libvirt_public.syms +--- libvirt-0.7.5.orig/src/libvirt_public.syms ++++ libvirt-0.7.5/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.4/python/generator.py +Index: libvirt-0.7.5/python/generator.py =================================================================== ---- libvirt-0.7.4.orig/python/generator.py -+++ libvirt-0.7.4/python/generator.py -@@ -287,6 +287,7 @@ skip_impl = ( +--- libvirt-0.7.5.orig/python/generator.py ++++ libvirt-0.7.5/python/generator.py +@@ -288,6 +288,7 @@ skip_impl = ( 'virDomainSetSchedulerParameters', 'virDomainGetVcpus', 'virDomainPinVcpu', @@ -975,11 +975,11 @@ 'virSecretGetValue', 'virSecretSetValue', 'virSecretGetUUID', -Index: libvirt-0.7.4/python/libvirt-override.c +Index: libvirt-0.7.5/python/libvirt-override.c =================================================================== ---- libvirt-0.7.4.orig/python/libvirt-override.c -+++ libvirt-0.7.4/python/libvirt-override.c -@@ -1400,6 +1400,34 @@ libvirt_virStoragePoolGetInfo(PyObject * +--- libvirt-0.7.5.orig/python/libvirt-override.c ++++ libvirt-0.7.5/python/libvirt-override.c +@@ -1516,6 +1516,34 @@ libvirt_virStoragePoolGetInfo(PyObject * return(py_retval); } @@ -1014,7 +1014,7 @@ static PyObject * libvirt_virStorageVolGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { -@@ -2557,6 +2585,7 @@ static PyMethodDef libvirtMethods[] = { +@@ -2690,6 +2718,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.4/python/libvirt-override-api.xml +Index: libvirt-0.7.5/python/libvirt-override-api.xml =================================================================== ---- libvirt-0.7.4.orig/python/libvirt-override-api.xml -+++ libvirt-0.7.4/python/libvirt-override-api.xml -@@ -140,6 +140,11 @@ +--- libvirt-0.7.5.orig/python/libvirt-override-api.xml ++++ libvirt-0.7.5/python/libvirt-override-api.xml +@@ -145,6 +145,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.4/src/xen/xen_inotify.c +Index: libvirt-0.7.5/src/xen/xen_inotify.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xen_inotify.c -+++ libvirt-0.7.4/src/xen/xen_inotify.c +--- libvirt-0.7.5.orig/src/xen/xen_inotify.c ++++ libvirt-0.7.5/src/xen/xen_inotify.c @@ -86,6 +86,11 @@ struct xenUnifiedDriver xenInotifyDriver NULL, /* domainGetSchedulerType */ NULL, /* domainGetSchedulerParameters */ ++++++ suse-network.patch ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:49.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:49.000000000 +0100 @@ -1,8 +1,8 @@ -Index: libvirt-0.7.4/src/conf/network_conf.c +Index: libvirt-0.7.5/src/conf/network_conf.c =================================================================== ---- libvirt-0.7.4.orig/src/conf/network_conf.c -+++ libvirt-0.7.4/src/conf/network_conf.c -@@ -865,6 +865,137 @@ error: +--- libvirt-0.7.5.orig/src/conf/network_conf.c ++++ libvirt-0.7.5/src/conf/network_conf.c +@@ -863,6 +863,137 @@ error: return NULL; } @@ -140,7 +140,7 @@ int virNetworkLoadAllConfigs(virConnectPtr conn, virNetworkObjListPtr nets, const char *configDir, -@@ -904,6 +1035,7 @@ int virNetworkLoadAllConfigs(virConnectP +@@ -902,6 +1033,7 @@ int virNetworkLoadAllConfigs(virConnectP closedir(dir); @@ -148,10 +148,10 @@ return 0; } -Index: libvirt-0.7.4/src/conf/network_conf.h +Index: libvirt-0.7.5/src/conf/network_conf.h =================================================================== ---- libvirt-0.7.4.orig/src/conf/network_conf.h -+++ libvirt-0.7.4/src/conf/network_conf.h +--- libvirt-0.7.5.orig/src/conf/network_conf.h ++++ libvirt-0.7.5/src/conf/network_conf.h @@ -94,6 +94,7 @@ struct _virNetworkObj { unsigned int active : 1; unsigned int autostart : 1; @@ -160,11 +160,11 @@ virNetworkDefPtr def; /* The current definition */ virNetworkDefPtr newDef; /* New definition to activate at shutdown */ -Index: libvirt-0.7.4/src/network/bridge_driver.c +Index: libvirt-0.7.5/src/network/bridge_driver.c =================================================================== ---- libvirt-0.7.4.orig/src/network/bridge_driver.c -+++ libvirt-0.7.4/src/network/bridge_driver.c -@@ -994,6 +994,11 @@ static int networkShutdownNetworkDaemon( +--- 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( unlink(stateFile); VIR_FREE(stateFile); @@ -176,7 +176,7 @@ if (network->dnsmasqPid > 0) kill(network->dnsmasqPid, SIGTERM); -@@ -1494,6 +1499,12 @@ static int networkSetAutostart(virNetwor +@@ -1510,6 +1515,12 @@ static int networkSetAutostart(virNetwor goto cleanup; } ++++++ xen-pv-cdrom.patch ++++++ --- /var/tmp/diff_new_pack.v8JJ9Q/_old 2010-01-08 01:36:49.000000000 +0100 +++ /var/tmp/diff_new_pack.v8JJ9Q/_new 2010-01-08 01:36:49.000000000 +0100 @@ -1,8 +1,8 @@ -Index: libvirt-0.7.4/src/xen/xend_internal.c +Index: libvirt-0.7.5/src/xen/xend_internal.c =================================================================== ---- libvirt-0.7.4.orig/src/xen/xend_internal.c -+++ libvirt-0.7.4/src/xen/xend_internal.c -@@ -5365,7 +5365,10 @@ xenDaemonFormatSxprDisk(virConnectPtr co +--- libvirt-0.7.5.orig/src/xen/xend_internal.c ++++ libvirt-0.7.5/src/xen/xend_internal.c +@@ -5409,7 +5409,10 @@ xenDaemonFormatSxprDisk(virConnectPtr co } else if (def->device == VIR_DOMAIN_DISK_DEVICE_CDROM) { virBufferVSprintf(buf, "(dev '%s:cdrom')", def->dst); } else { ++++++ xen-shr-pages.patch ++++++ Index: libvirt-0.7.5/src/xen/xen_hypervisor.c =================================================================== --- libvirt-0.7.5.orig/src/xen/xen_hypervisor.c +++ libvirt-0.7.5/src/xen/xen_hypervisor.c @@ -215,10 +215,26 @@ struct xen_v2d5_getdomaininfo { }; typedef struct xen_v2d5_getdomaininfo xen_v2d5_getdomaininfo; +struct xen_v2d6_getdomaininfo { + domid_t domain; /* the domain number */ + uint32_t flags; /* flags, see before */ + uint64_t tot_pages ALIGN_64; /* total number of pages used */ + uint64_t max_pages ALIGN_64; /* maximum number of pages allowed */ + uint64_t shr_pages ALIGN_64; /* number of shared pages */ + uint64_t shared_info_frame ALIGN_64; /* MFN of shared_info struct */ + uint64_t cpu_time ALIGN_64; /* CPU time used */ + uint32_t nr_online_vcpus; /* Number of VCPUs currently online. */ + uint32_t max_vcpu_id; /* Maximum VCPUID in use by this domain. */ + uint32_t ssidref; + xen_domain_handle_t handle; +}; +typedef struct xen_v2d6_getdomaininfo xen_v2d6_getdomaininfo; + union xen_getdomaininfo { struct xen_v0_getdomaininfo v0; struct xen_v2_getdomaininfo v2; struct xen_v2d5_getdomaininfo v2d5; + struct xen_v2d6_getdomaininfo v2d6; }; typedef union xen_getdomaininfo xen_getdomaininfo; @@ -226,6 +242,7 @@ union xen_getdomaininfolist { struct xen_v0_getdomaininfo *v0; struct xen_v2_getdomaininfo *v2; struct xen_v2d5_getdomaininfo *v2d5; + struct xen_v2d6_getdomaininfo *v2d6; }; typedef union xen_getdomaininfolist xen_getdomaininfolist; @@ -263,114 +280,147 @@ typedef struct xen_v2s5_availheap xen_v #define XEN_GETDOMAININFOLIST_ALLOC(domlist, size) \ (hypervisor_version < 2 ? \ (VIR_ALLOC_N(domlist.v0, (size)) == 0) : \ - (dom_interface_version < 5 ? \ - (VIR_ALLOC_N(domlist.v2, (size)) == 0) : \ - (VIR_ALLOC_N(domlist.v2d5, (size)) == 0))) + (dom_interface_version >= 6 ? \ + (VIR_ALLOC_N(domlist.v2d6, (size)) == 0) : \ + (dom_interface_version == 5 ? \ + (VIR_ALLOC_N(domlist.v2d5, (size)) == 0) : \ + (VIR_ALLOC_N(domlist.v2, (size)) == 0)))) #define XEN_GETDOMAININFOLIST_FREE(domlist) \ (hypervisor_version < 2 ? \ VIR_FREE(domlist.v0) : \ - (dom_interface_version < 5 ? \ - VIR_FREE(domlist.v2) : \ - VIR_FREE(domlist.v2d5))) + (dom_interface_version >= 6 ? \ + VIR_FREE(domlist.v2d6) : \ + (dom_interface_version == 5 ? \ + VIR_FREE(domlist.v2d5) : \ + VIR_FREE(domlist.v2)))) #define XEN_GETDOMAININFOLIST_CLEAR(domlist, size) \ (hypervisor_version < 2 ? \ memset(domlist.v0, 0, sizeof(*domlist.v0) * size) : \ - (dom_interface_version < 5 ? \ - memset(domlist.v2, 0, sizeof(*domlist.v2) * size) : \ - memset(domlist.v2d5, 0, sizeof(*domlist.v2d5) * size))) + (dom_interface_version >= 6 ? \ + memset(domlist.v2d6, 0, sizeof(*domlist.v2d6) * size) : \ + (dom_interface_version == 5 ? \ + memset(domlist.v2d5, 0, sizeof(*domlist.v2d5) * size) : \ + memset(domlist.v2, 0, sizeof(*domlist.v2) * size)))) #define XEN_GETDOMAININFOLIST_DOMAIN(domlist, n) \ (hypervisor_version < 2 ? \ domlist.v0[n].domain : \ - (dom_interface_version < 5 ? \ - domlist.v2[n].domain : \ - domlist.v2d5[n].domain)) + (dom_interface_version >= 6 ? \ + domlist.v2d6[n].domain : \ + (dom_interface_version == 5 ? \ + domlist.v2d5[n].domain : \ + domlist.v2[n].domain))) #define XEN_GETDOMAININFOLIST_UUID(domlist, n) \ (hypervisor_version < 2 ? \ domlist.v0[n].handle : \ - (dom_interface_version < 5 ? \ - domlist.v2[n].handle : \ - domlist.v2d5[n].handle)) + (dom_interface_version >= 6 ? \ + domlist.v2d6[n].handle : \ + (dom_interface_version == 5 ? \ + domlist.v2d5[n].handle : \ + domlist.v2[n].handle))) #define XEN_GETDOMAININFOLIST_DATA(domlist) \ (hypervisor_version < 2 ? \ (void*)(domlist->v0) : \ - (dom_interface_version < 5 ? \ - (void*)(domlist->v2) : \ - (void*)(domlist->v2d5))) + (dom_interface_version >= 6 ? \ + (void*)(domlist->v2d6) : \ + (dom_interface_version == 5 ? \ + (void*)(domlist->v2d5) : \ + (void*)(domlist->v2)))) #define XEN_GETDOMAININFO_SIZE \ (hypervisor_version < 2 ? \ sizeof(xen_v0_getdomaininfo) : \ - (dom_interface_version < 5 ? \ - sizeof(xen_v2_getdomaininfo) : \ - sizeof(xen_v2d5_getdomaininfo))) + (dom_interface_version >= 6 ? \ + sizeof(xen_v2d6_getdomaininfo) : \ + (dom_interface_version == 5 ? \ + sizeof(xen_v2d5_getdomaininfo) : \ + sizeof(xen_v2_getdomaininfo)))) #define XEN_GETDOMAININFO_CLEAR(dominfo) \ (hypervisor_version < 2 ? \ memset(&(dominfo.v0), 0, sizeof(xen_v0_getdomaininfo)) : \ - (dom_interface_version < 5 ? \ - memset(&(dominfo.v2), 0, sizeof(xen_v2_getdomaininfo)) : \ - memset(&(dominfo.v2d5), 0, sizeof(xen_v2d5_getdomaininfo)))) + (dom_interface_version >= 6 ? \ + memset(&(dominfo.v2d6), 0, sizeof(xen_v2d6_getdomaininfo)) : \ + (dom_interface_version == 5 ? \ + memset(&(dominfo.v2d5), 0, sizeof(xen_v2d5_getdomaininfo)) : \ + memset(&(dominfo.v2), 0, sizeof(xen_v2_getdomaininfo))))) #define XEN_GETDOMAININFO_DOMAIN(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.domain : \ - (dom_interface_version < 5 ? \ - dominfo.v2.domain : \ - dominfo.v2d5.domain)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.domain : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.domain : \ + dominfo.v2.domain))) #define XEN_GETDOMAININFO_CPUTIME(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.cpu_time : \ - (dom_interface_version < 5 ? \ - dominfo.v2.cpu_time : \ - dominfo.v2d5.cpu_time)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.cpu_time : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.cpu_time : \ + dominfo.v2.cpu_time))) + #define XEN_GETDOMAININFO_CPUCOUNT(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.nr_online_vcpus : \ - (dom_interface_version < 5 ? \ - dominfo.v2.nr_online_vcpus : \ - dominfo.v2d5.nr_online_vcpus)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.nr_online_vcpus : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.nr_online_vcpus : \ + dominfo.v2.nr_online_vcpus))) #define XEN_GETDOMAININFO_MAXCPUID(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.max_vcpu_id : \ - (dom_interface_version < 5 ? \ - dominfo.v2.max_vcpu_id : \ - dominfo.v2d5.max_vcpu_id)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.max_vcpu_id : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.max_vcpu_id : \ + dominfo.v2.max_vcpu_id))) #define XEN_GETDOMAININFO_FLAGS(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.flags : \ - (dom_interface_version < 5 ? \ - dominfo.v2.flags : \ - dominfo.v2d5.flags)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.flags : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.flags : \ + dominfo.v2.flags))) #define XEN_GETDOMAININFO_TOT_PAGES(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.tot_pages : \ - (dom_interface_version < 5 ? \ - dominfo.v2.tot_pages : \ - dominfo.v2d5.tot_pages)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.tot_pages : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.tot_pages : \ + dominfo.v2.tot_pages))) #define XEN_GETDOMAININFO_MAX_PAGES(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.max_pages : \ - (dom_interface_version < 5 ? \ - dominfo.v2.max_pages : \ - dominfo.v2d5.max_pages)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.max_pages : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.max_pages : \ + dominfo.v2.max_pages))) #define XEN_GETDOMAININFO_UUID(dominfo) \ (hypervisor_version < 2 ? \ dominfo.v0.handle : \ - (dom_interface_version < 5 ? \ - dominfo.v2.handle : \ - dominfo.v2d5.handle)) + (dom_interface_version >= 6 ? \ + dominfo.v2d6.handle : \ + (dom_interface_version == 5 ? \ + dominfo.v2d5.handle : \ + dominfo.v2.handle))) static int @@ -2050,6 +2100,12 @@ xenHypervisorInit(void) DEBUG0("Using hypervisor call v2, sys ver6 dom ver5\n"); goto done; } + /* Xen 4.0 */ + dom_interface_version = 6; /* XEN_DOMCTL_INTERFACE_VERSION */ + if (virXen_getvcpusinfo(fd, 0, 0, ipt, NULL, 0) == 0){ + DEBUG0("Using hypervisor call v2, sys ver6 dom ver6\n"); + goto done; + } } hypervisor_version = 1; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org