Compare commits

..

11 Commits

Author SHA1 Message Date
Richard W.M. Jones
8c01426c44 Multiple fixes to remove rpmlint warnings/errors (rhbz #226055) 2009-02-12 12:35:17 +00:00
Mark McLoughlin
e859f7e59e Kill some old tarballs
(Just a test commit to see if it gets through mailman)
2009-02-09 08:55:58 +00:00
Daniel P. Berrange
25ea2f59bd Fix patches to be -p1 not -p0 2009-02-06 19:36:12 +00:00
Daniel P. Berrange
c80b7f0d5a Fix libvirtd --timeout usage
Fix RPC call problems and QEMU startup handling (rhbz #484414)
Fix unowned directories (rhbz #483442)
2009-02-06 19:28:20 +00:00
Daniel Veillard
958f1c3dff Release of 0.6.0, Daniel 2009-01-31 09:48:47 +00:00
Daniel Veillard
4a8ca1017f fix missing read-only access checks, fixes CVE-2008-5086
daniel
2008-12-17 16:59:30 +00:00
Daniel Veillard
1e122ee5dc fixing #460510 2008-12-12 07:37:16 +00:00
Daniel Veillard
6a6307bcdc Update to 0.5.1, Daniel 2008-12-05 05:38:54 +00:00
Ignacio Vazquez-Abrams
6e8332946a Rebuild for Python 2.6 2008-11-29 16:48:07 +00:00
Daniel Veillard
982683e56f removing old patch now upstream, Daniel 2008-11-26 09:15:42 +00:00
Daniel Veillard
7244d1a339 Upstream release 0.5.0, Daniel 2008-11-26 08:50:10 +00:00
6 changed files with 325 additions and 54 deletions

View File

@@ -3,4 +3,4 @@
i686
x86_64
libvirt-*.tar.gz
libvirt-0.4.6.tar.gz
libvirt-0.6.0.tar.gz

View File

@@ -0,0 +1,70 @@
diff -rup libvirt-0.6.0.orig/qemud/event.c libvirt-0.6.0.new/qemud/event.c
--- libvirt-0.6.0.orig/qemud/event.c 2009-02-06 19:30:58.000000000 +0000
+++ libvirt-0.6.0.new/qemud/event.c 2009-02-06 19:30:00.000000000 +0000
@@ -657,6 +657,8 @@ virPollEventToEventHandleType(int events
ret |= VIR_EVENT_HANDLE_WRITABLE;
if(events & POLLERR)
ret |= VIR_EVENT_HANDLE_ERROR;
+ if(events & POLLNVAL) /* Treat NVAL as error, since libvirt doesn't distinguish */
+ ret |= VIR_EVENT_HANDLE_ERROR;
if(events & POLLHUP)
ret |= VIR_EVENT_HANDLE_HANGUP;
return ret;
diff -rup libvirt-0.6.0.orig/src/domain_conf.c libvirt-0.6.0.new/src/domain_conf.c
--- libvirt-0.6.0.orig/src/domain_conf.c 2009-01-31 09:04:17.000000000 +0000
+++ libvirt-0.6.0.new/src/domain_conf.c 2009-02-06 19:30:00.000000000 +0000
@@ -504,6 +504,7 @@ virDomainObjPtr virDomainAssignDef(virCo
domain->state = VIR_DOMAIN_SHUTOFF;
domain->def = def;
domain->monitor_watch = -1;
+ domain->monitor = -1;
if (VIR_REALLOC_N(doms->objs, doms->count + 1) < 0) {
virReportOOMError(conn);
diff -rup libvirt-0.6.0.orig/src/remote_internal.c libvirt-0.6.0.new/src/remote_internal.c
--- libvirt-0.6.0.orig/src/remote_internal.c 2009-01-31 09:04:18.000000000 +0000
+++ libvirt-0.6.0.new/src/remote_internal.c 2009-02-06 19:30:00.000000000 +0000
@@ -6198,17 +6198,17 @@ processCalls(virConnectPtr conn,
continue;
virReportSystemError(in_open ? NULL : conn, errno,
"%s", _("poll on socket failed"));
- return -1;
+ goto error;
}
if (fds[0].revents & POLLOUT) {
if (processCallSend(conn, priv, in_open) < 0)
- return -1;
+ goto error;
}
if (fds[0].revents & POLLIN) {
if (processCallRecv(conn, priv, in_open) < 0)
- return -1;
+ goto error;
}
/* Iterate through waiting threads and if
@@ -6259,9 +6259,21 @@ processCalls(virConnectPtr conn,
if (fds[0].revents & (POLLHUP | POLLERR)) {
errorf(in_open ? NULL : conn, VIR_ERR_INTERNAL_ERROR,
"%s", _("received hangup / error event on socket"));
- return -1;
+ goto error;
}
}
+
+
+error:
+ priv->waitDispatch = thiscall->next;
+ DEBUG("Giving up the buck due to I/O error %d %p %p", thiscall->proc_nr, thiscall, priv->waitDispatch);
+ /* See if someone else is still waiting
+ * and if so, then pass the buck ! */
+ if (priv->waitDispatch) {
+ DEBUG("Passing the buck to %d %p", priv->waitDispatch->proc_nr, priv->waitDispatch);
+ virCondSignal(&priv->waitDispatch->cond);
+ }
+ return -1;
}
/*

124
libvirt-0.6.0-timeout.patch Normal file
View File

@@ -0,0 +1,124 @@
diff -rup libvirt-0.6.0.orig/qemud/event.c libvirt-0.6.0.new/qemud/event.c
--- libvirt-0.6.0.orig/qemud/event.c 2008-12-22 13:02:54.000000000 +0000
+++ libvirt-0.6.0.new/qemud/event.c 2009-02-06 19:29:28.000000000 +0000
@@ -68,6 +68,7 @@ struct virEventTimeout {
/* State for the main event loop */
struct virEventLoop {
pthread_mutex_t lock;
+ int running;
pthread_t leader;
int wakeupfd[2];
int handlesCount;
@@ -521,6 +522,7 @@ int virEventRunOnce(void) {
int ret, timeout, nfds;
virEventLock();
+ eventLoop.running = 1;
eventLoop.leader = pthread_self();
if ((nfds = virEventMakePollFDs(&fds)) < 0) {
virEventUnlock();
@@ -572,7 +574,7 @@ int virEventRunOnce(void) {
return -1;
}
- eventLoop.leader = 0;
+ eventLoop.running = 0;
virEventUnlock();
return 0;
}
@@ -611,7 +613,9 @@ int virEventInit(void)
static int virEventInterruptLocked(void)
{
char c = '\0';
- if (pthread_self() == eventLoop.leader)
+
+ if (!eventLoop.running ||
+ pthread_self() == eventLoop.leader)
return 0;
if (safewrite(eventLoop.wakeupfd[1], &c, sizeof(c)) != sizeof(c))
diff -rup libvirt-0.6.0.orig/qemud/qemud.c libvirt-0.6.0.new/qemud/qemud.c
--- libvirt-0.6.0.orig/qemud/qemud.c 2009-01-31 09:04:17.000000000 +0000
+++ libvirt-0.6.0.new/qemud/qemud.c 2009-02-06 19:29:28.000000000 +0000
@@ -2013,11 +2013,15 @@ static int qemudOneLoop(void) {
return 0;
}
-static void qemudInactiveTimer(int timer ATTRIBUTE_UNUSED, void *data) {
+static void qemudInactiveTimer(int timerid, void *data) {
struct qemud_server *server = (struct qemud_server *)data;
- DEBUG0("Got inactive timer expiry");
- if (!virStateActive()) {
- DEBUG0("No state active, shutting down");
+
+ if (virStateActive() ||
+ server->clients) {
+ DEBUG0("Timer expired but still active, not shutting down");
+ virEventUpdateTimeoutImpl(timerid, -1);
+ } else {
+ DEBUG0("Timer expired and inactive, shutting down");
server->shutdown = 1;
}
}
@@ -2048,9 +2052,18 @@ static void qemudFreeClient(struct qemud
static int qemudRunLoop(struct qemud_server *server) {
int timerid = -1;
int ret = -1, i;
+ int timerActive = 0;
virMutexLock(&server->lock);
+ if (timeout > 0 &&
+ (timerid = virEventAddTimeoutImpl(-1,
+ qemudInactiveTimer,
+ server, NULL)) < 0) {
+ VIR_ERROR0(_("Failed to register shutdown timeout"));
+ return -1;
+ }
+
if (min_workers > max_workers)
max_workers = min_workers;
@@ -2071,11 +2084,21 @@ static int qemudRunLoop(struct qemud_ser
* if any drivers have active state, if not
* shutdown after timeout seconds
*/
- if (timeout > 0 && !virStateActive() && !server->clients) {
- timerid = virEventAddTimeoutImpl(timeout*1000,
- qemudInactiveTimer,
- server, NULL);
- DEBUG("Scheduling shutdown timer %d", timerid);
+ if (timeout > 0) {
+ if (timerActive) {
+ if (server->clients) {
+ DEBUG("Deactivating shutdown timer %d", timerid);
+ virEventUpdateTimeoutImpl(timerid, -1);
+ timerActive = 0;
+ }
+ } else {
+ if (!virStateActive() &&
+ !server->clients) {
+ DEBUG("Activating shutdown timer %d", timerid);
+ virEventUpdateTimeoutImpl(timerid, timeout * 1000);
+ timerActive = 1;
+ }
+ }
}
virMutexUnlock(&server->lock);
@@ -2129,15 +2152,6 @@ static int qemudRunLoop(struct qemud_ser
}
}
- /* Unregister any timeout that's active, since we
- * just had an event processed
- */
- if (timerid != -1) {
- DEBUG("Removing shutdown timer %d", timerid);
- virEventRemoveTimeoutImpl(timerid);
- timerid = -1;
- }
-
if (server->shutdown) {
ret = 0;
break;

View File

@@ -10,6 +10,8 @@
%define with_polkit 0%{!?_without_polkit:0}
%define with_python 0%{!?_without_python:1}
%define with_libvirtd 0%{!?_without_libvirtd:1}
%define with_uml 0%{!?_without_uml:1}
%define with_network 0%{!?_without_network:1}
# Xen is available only on i386 x86_64 ia64
%ifnarch i386 i686 x86_64 ia64
@@ -20,7 +22,7 @@
%define with_xen_proxy 0
%endif
%if "%{fedora}"
%if 0%{?fedora}
%ifarch ppc64
%define with_qemu 0
%endif
@@ -31,23 +33,36 @@
%define with_xen_proxy 0
%endif
#
# If building on RHEL switch on the specific support
# for the specific Xen version
#
%if 0%{?fedora}
%define with_rhel5 0
%else
%define with_rhel5 1
%endif
Summary: Library providing a simple API virtualization
Name: libvirt
Version: 0.4.6
Version: 0.6.0
Release: 3%{?dist}%{?extra_release}
License: LGPLv2+
Group: Development/Libraries
Source: libvirt-%{version}.tar.gz
Patch0: python_make.patch
Patch1: %{name}-%{version}-timeout.patch
Patch2: %{name}-%{version}-rpccall.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
URL: http://libvirt.org/
BuildRequires: python python-devel
Requires: libxml2
Requires: readline
Requires: ncurses
Requires: dnsmasq
Requires: bridge-utils
Requires: iptables
# needed for device enumeration
Requires: hal
# So remote clients can access libvirt over SSH tunnel
# (client invokes 'nc' against the UNIX socket on the server)
Requires: nc
@@ -89,6 +104,7 @@ BuildRequires: readline-devel
BuildRequires: ncurses-devel
BuildRequires: gettext
BuildRequires: gnutls-devel
BuildRequires: hal-devel
%if %{with_avahi}
BuildRequires: avahi-devel
%endif
@@ -121,7 +137,10 @@ BuildRequires: lvm2
BuildRequires: iscsi-initiator-utils
# For disk driver
BuildRequires: parted-devel
Obsoletes: libvir
# For QEMU/LXC numa info
BuildRequires: numactl-devel
Obsoletes: libvir <= 0.2
Provides: libvir = %{version}-%{release}
# Fedora build root suckage
BuildRequires: gawk
@@ -133,12 +152,13 @@ of recent versions of Linux (and other OSes).
%package devel
Summary: Libraries, includes, etc. to compile with the libvirt library
Group: Development/Libraries
Requires: libvirt = %{version}
Requires: libvirt = %{version}-%{release}
Requires: pkgconfig
%if %{with_xen}
Requires: xen-devel
%endif
Obsoletes: libvir-devel
Obsoletes: libvir-devel <= 0.2
Provides: libvir-devel = %{version}-%{release}
%description devel
Includes and documentations for the C library providing an API to use
@@ -148,8 +168,9 @@ the virtualization capabilities of recent versions of Linux (and other OSes).
%package python
Summary: Python bindings for the libvirt library
Group: Development/Libraries
Requires: libvirt = %{version}
Obsoletes: libvir-python
Requires: libvirt = %{version}-%{release}
Obsoletes: libvir-python <= 0.2
Provides: libvir-python = %{version}-%{release}
%description python
The libvirt-python package contains a module that permits applications
@@ -160,7 +181,11 @@ of recent versions of Linux (and other OSes).
%prep
%setup -q
%patch0 -p0
%patch1 -p1
%patch2 -p1
mv NEWS NEWS.old
iconv -f ISO-8859-1 -t UTF-8 < NEWS.old > NEWS
%build
%if ! %{with_xen}
@@ -199,6 +224,18 @@ of recent versions of Linux (and other OSes).
%define _without_libvirtd --without-libvirtd
%endif
%if ! %{with_uml}
%define _without_uml --without-uml
%endif
%if %{with_rhel5}
%define _with_rhel5_api --with-rhel5-api
%endif
%if ! %{with_network}
%define _without_network --without-network
%endif
%configure %{?_without_xen} \
%{?_without_qemu} \
%{?_without_openvz} \
@@ -208,13 +245,16 @@ of recent versions of Linux (and other OSes).
%{?_without_polkit} \
%{?_without_python} \
%{?_without_libvirtd} \
%{?_without_uml} \
%{?_without_network} \
%{?_with_rhel5_api} \
--with-init-script=redhat \
--with-qemud-pid-file=%{_localstatedir}/run/libvirt_qemud.pid \
--with-remote-file=%{_localstatedir}/run/libvirtd.pid
make %{?_smp_mflags}
%install
rm -fr %{buildroot}
rm -rf %{buildroot}
%makeinstall
(cd docs/examples ; make clean ; rm -rf .deps Makefile Makefile.in)
@@ -256,6 +296,10 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-python-%{version}
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf
%endif
%if %{with_libvirtd}
chmod 0644 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/libvirtd
%endif
%clean
rm -fr %{buildroot}
@@ -268,7 +312,7 @@ rm -fr %{buildroot}
# or on the first upgrade from a non-network aware libvirt only.
# We check this by looking to see if the daemon is already installed
/sbin/chkconfig --list libvirtd 1>/dev/null 2>&1
if [ $? != 0 ]
if [ $? != 0 -a ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ]
then
UUID=`/usr/bin/uuidgen`
sed -e "s,</name>,</name>\n <uuid>$UUID</uuid>," \
@@ -289,8 +333,7 @@ if [ $1 = 0 ]; then
fi
%endif
%postun
/sbin/ldconfig
%postun -p /sbin/ldconfig
%files -f %{name}.lang
%defattr(-, root, root)
@@ -311,6 +354,7 @@ fi
%{_sysconfdir}/rc.d/init.d/libvirtd
%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd
%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd
%endif
%if %{with_qemu}
@@ -327,11 +371,42 @@ fi
%{_datadir}/libvirt/networks/default.xml
%endif
%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
%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/
%if %{with_qemu}
%dir %{_localstatedir}/run/libvirt/qemu/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/qemu/
%endif
%if %{with_lxc}
%dir %{_localstatedir}/run/libvirt/lxc/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/
%endif
%if %{with_uml}
%dir %{_localstatedir}/run/libvirt/uml/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/uml/
%endif
%if %{with_network}
%dir %{_localstatedir}/run/libvirt/network/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/iptables/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/iptables/filter/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/iptables/nat/
%endif
%if %{with_qemu}
%{_datadir}/augeas/lenses/libvirtd_qemu.aug
%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug
@@ -346,6 +421,7 @@ fi
%{_datadir}/PolicyKit/policy/org.libvirt.unix.policy
%endif
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/
%if %{with_qemu}
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/
%endif
@@ -363,7 +439,6 @@ fi
%attr(0755, root, root) %{_sbindir}/libvirtd
%endif
%doc docs/*.rng
%doc docs/*.xml
%files devel
@@ -396,6 +471,43 @@ fi
%endif
%changelog
* Wed Feb 11 2009 Richard W.M. Jones <rjones@redhat.com> - 0.6.0-3.fc11
- Multiple fixes to remove rpmlint warnings/errors (rhbz #226055)
* Fri Feb 6 2009 Daniel P. Berrange <berrange@redhat.com> - 0.6.0-2.fc11
- Fix libvirtd --timeout usage
- Fix RPC call problems and QEMU startup handling (rhbz #484414)
- Fix unowned directories (rhbz #483442)
* Sat Jan 31 2009 Daniel Veillard <veillard@redhat.com> - 0.6.0-1.fc11
- upstream release 0.6.0
- thread safety of API
- allow QEmu/KVM domains to survive daemon restart
- extended logging capabilities
- support copy on write storage volumes for QEmu/KVM
- support of storage cache control options for QEmu/KVM
- a lot of bug fixes
* Wed Dec 17 2008 Daniel Veillard <veillard@redhat.com> - 0.5.1-2.fc11
- fix missing read-only access checks, fixes CVE-2008-5086
* Fri Dec 5 2008 Daniel Veillard <veillard@redhat.com> - 0.5.1-1.fc11
- upstream release 0.5.1
- mostly bugfixes e.g #473071
- some driver improvments
* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0.5.0-2
- Rebuild for Python 2.6
* Wed Nov 26 2008 Daniel Veillard <veillard@redhat.com> - 0.5.0-1.fc11
- upstream release 0.5.0
- domain lifecycle event support
- node device enumeration
- KVM/QEmu migration support
- improved LXC support
- SDL display configuration
- User Mode Linux driver (Daniel Berrange)
* Wed Sep 24 2008 Daniel Veillard <veillard@redhat.com> - 0.4.6-3.fc10
- apply the python makefile patch for #463733
@@ -430,7 +542,7 @@ fi
* Wed Jun 4 2008 Mark McLoughlin <markmc@redhat.com> - 0.4.2-6.fc10
- Disable lokkit support again (#449996, #447633)
- Ensure %{fedora} is evaluated correctly
- Ensure %-fedora is evaluated correctly
* Thu May 15 2008 Daniel P. Berrange <berrange@redhat.com> - 0.4.2-5.fc10
- Rebuild with policy enabled (rhbz #446616)
@@ -615,7 +727,7 @@ fi
- it's pkgconfig not pgkconfig !
* Mon Nov 6 2006 Daniel Veillard <veillard@redhat.com> 0.1.8-2
- fixing spec file, added %dist, -devel requires pkgconfig and xen-devel
- fixing spec file, added %-dist, -devel requires pkgconfig and xen-devel
- Resolves: rhbz#202320
* Mon Oct 16 2006 Daniel Veillard <veillard@redhat.com> 0.1.8-1

View File

@@ -1,35 +0,0 @@
Index: python/Makefile.am
===================================================================
RCS file: /data/cvs/libxen/python/Makefile.am,v
retrieving revision 1.13
diff -u -p -r1.13 Makefile.am
--- python/Makefile.am 5 Feb 2008 19:27:37 -0000 1.13
+++ python/Makefile.am 24 Sep 2008 13:21:06 -0000
@@ -50,7 +50,7 @@ GENERATED= libvirt-export.c \
$(GENERATED): $(srcdir)/$(GENERATE) $(API_DESC)
$(PYTHON) $(srcdir)/$(GENERATE) $(srcdir)
-libvirt.py: $(srcdir)/libvir.py libvirtclass.py
+libvirt.py: $(srcdir)/libvir.py $(GENERATED)
cat $(srcdir)/libvir.py libvirtclass.py > $@-t
mv $@-t $@
*** python/Makefile.in.orig 2008-09-24 15:19:20.000000000 +0200
--- python/Makefile.in 2008-09-24 15:20:07.000000000 +0200
*************** uninstall-am: uninstall-local uninstall-
*** 1027,1033 ****
@WITH_PYTHON_TRUE@$(GENERATED): $(srcdir)/$(GENERATE) $(API_DESC)
@WITH_PYTHON_TRUE@ $(PYTHON) $(srcdir)/$(GENERATE) $(srcdir)
! @WITH_PYTHON_TRUE@libvirt.py: $(srcdir)/libvir.py libvirtclass.py
@WITH_PYTHON_TRUE@ cat $(srcdir)/libvir.py libvirtclass.py > $@-t
@WITH_PYTHON_TRUE@ mv $@-t $@
--- 1027,1033 ----
@WITH_PYTHON_TRUE@$(GENERATED): $(srcdir)/$(GENERATE) $(API_DESC)
@WITH_PYTHON_TRUE@ $(PYTHON) $(srcdir)/$(GENERATE) $(srcdir)
! @WITH_PYTHON_TRUE@libvirt.py: $(srcdir)/libvir.py $(GENERATED)
@WITH_PYTHON_TRUE@ cat $(srcdir)/libvir.py libvirtclass.py > $@-t
@WITH_PYTHON_TRUE@ mv $@-t $@

View File

@@ -1 +1 @@
abdf727deaffd868172f7243eb75ffe3 libvirt-0.4.6.tar.gz
8e0120d5452b37179f682031bf0895ea libvirt-0.6.0.tar.gz