diff --git a/libvirt-dnsmasq-drop-filterwin2k.patch b/libvirt-dnsmasq-drop-filterwin2k.patch new file mode 100644 index 0000000..dbab62a --- /dev/null +++ b/libvirt-dnsmasq-drop-filterwin2k.patch @@ -0,0 +1,125 @@ +commit f20b7dbe633acf7df9921027c6ca4f0b97918c8c +Author: Gene Czarcinski +Date: Thu Sep 6 12:08:22 2012 -0400 + + remove dnsmasq command line parameter "--filterwin2k" + + This patch removed the "--filterwin2k" dnsmasq command line + parameter which was unnecessary for domain specification, + possibly blocked some usage, and was command line clutter. + + Gene Czarcinski + +diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c +index 53eebed..808c843 100644 +--- a/src/network/bridge_driver.c ++++ b/src/network/bridge_driver.c +@@ -543,7 +543,7 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network, + /* need to specify local even if no domain specified */ + virCommandAddArgFormat(cmd, "--local=/%s/", + network->def->domain ? network->def->domain : ""); +- virCommandAddArgList(cmd, "--domain-needed", "--filterwin2k", NULL); ++ virCommandAddArg(cmd, "--domain-needed"); + + if (pidfile) + virCommandAddArgPair(cmd, "--pid-file", pidfile); +diff --git a/tests/networkxml2argvdata/isolated-network.argv b/tests/networkxml2argvdata/isolated-network.argv +index 276f42a..048c72b 100644 +--- a/tests/networkxml2argvdata/isolated-network.argv ++++ b/tests/networkxml2argvdata/isolated-network.argv +@@ -1,5 +1,5 @@ + @DNSMASQ@ --strict-order --bind-interfaces \ +---local=// --domain-needed --filterwin2k --conf-file= \ ++--local=// --domain-needed --conf-file= \ + --except-interface lo --dhcp-option=3 --no-resolv \ + --listen-address 192.168.152.1 \ + --dhcp-range 192.168.152.2,192.168.152.254 \ +diff --git a/tests/networkxml2argvdata/nat-network-dns-hosts.argv b/tests/networkxml2argvdata/nat-network-dns-hosts.argv +index 8040e2a..03a0676 100644 +--- a/tests/networkxml2argvdata/nat-network-dns-hosts.argv ++++ b/tests/networkxml2argvdata/nat-network-dns-hosts.argv +@@ -1,4 +1,4 @@ + @DNSMASQ@ --strict-order --bind-interfaces --domain=example.com \ +---local=/example.com/ --domain-needed --filterwin2k \ ++--local=/example.com/ --domain-needed \ + --conf-file= --except-interface lo --listen-address 192.168.122.1 \ + --expand-hosts --addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts\ +diff --git a/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv b/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv +index bb50fd6..a1e4200 100644 +--- a/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv ++++ b/tests/networkxml2argvdata/nat-network-dns-srv-record-minimal.argv +@@ -1,7 +1,7 @@ + @DNSMASQ@ \ + --strict-order \ + --bind-interfaces \ +---local=// --domain-needed --filterwin2k --conf-file= \ ++--local=// --domain-needed --conf-file= \ + --except-interface lo \ + --srv-host=name.tcp.,,,, \ + --listen-address 192.168.122.1 \ +diff --git a/tests/networkxml2argvdata/nat-network-dns-srv-record.argv b/tests/networkxml2argvdata/nat-network-dns-srv-record.argv +index 36498f2..8af38c4 100644 +--- a/tests/networkxml2argvdata/nat-network-dns-srv-record.argv ++++ b/tests/networkxml2argvdata/nat-network-dns-srv-record.argv +@@ -1,7 +1,7 @@ + @DNSMASQ@ \ + --strict-order \ + --bind-interfaces \ +---local=// --domain-needed --filterwin2k --conf-file= \ ++--local=// --domain-needed --conf-file= \ + --except-interface lo \ + --srv-host=name.tcp.test-domain-name,.,1024,10,10 \ + --listen-address 192.168.122.1 \ +diff --git a/tests/networkxml2argvdata/nat-network-dns-txt-record.argv b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv +index 2a6c799..404b56a 100644 +--- a/tests/networkxml2argvdata/nat-network-dns-txt-record.argv ++++ b/tests/networkxml2argvdata/nat-network-dns-txt-record.argv +@@ -1,5 +1,5 @@ + @DNSMASQ@ --strict-order --bind-interfaces \ +---local=// --domain-needed --filterwin2k --conf-file= \ ++--local=// --domain-needed --conf-file= \ + --except-interface lo --txt-record=example,example value \ + --listen-address 192.168.122.1 --listen-address 192.168.123.1 \ + --listen-address 2001:db8:ac10:fe01::1 \ +diff --git a/tests/networkxml2argvdata/nat-network.argv b/tests/networkxml2argvdata/nat-network.argv +index 265b931..1dc8f73 100644 +--- a/tests/networkxml2argvdata/nat-network.argv ++++ b/tests/networkxml2argvdata/nat-network.argv +@@ -1,5 +1,5 @@ + @DNSMASQ@ --strict-order --bind-interfaces \ +---local=// --domain-needed --filterwin2k --conf-file= \ ++--local=// --domain-needed --conf-file= \ + --except-interface lo --listen-address 192.168.122.1 \ + --listen-address 192.168.123.1 --listen-address 2001:db8:ac10:fe01::1 \ + --listen-address 2001:db8:ac10:fd01::1 --listen-address 10.24.10.1 \ +diff --git a/tests/networkxml2argvdata/netboot-network.argv b/tests/networkxml2argvdata/netboot-network.argv +index 4f998d5..5a85ec2 100644 +--- a/tests/networkxml2argvdata/netboot-network.argv ++++ b/tests/networkxml2argvdata/netboot-network.argv +@@ -1,5 +1,5 @@ + @DNSMASQ@ --strict-order --bind-interfaces --domain=example.com \ +---local=/example.com/ --domain-needed --filterwin2k --conf-file= \ ++--local=/example.com/ --domain-needed --conf-file= \ + --except-interface lo --listen-address 192.168.122.1 \ + --dhcp-range 192.168.122.2,192.168.122.254 \ + --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \ +diff --git a/tests/networkxml2argvdata/netboot-proxy-network.argv b/tests/networkxml2argvdata/netboot-proxy-network.argv +index 89319ef..36836b0 100644 +--- a/tests/networkxml2argvdata/netboot-proxy-network.argv ++++ b/tests/networkxml2argvdata/netboot-proxy-network.argv +@@ -1,5 +1,5 @@ + @DNSMASQ@ --strict-order --bind-interfaces --domain=example.com \ +---local=/example.com/ --domain-needed --filterwin2k --conf-file= \ ++--local=/example.com/ --domain-needed --conf-file= \ + --except-interface lo --listen-address 192.168.122.1 \ + --dhcp-range 192.168.122.2,192.168.122.254 \ + --dhcp-leasefile=/var/lib/libvirt/dnsmasq/netboot.leases \ +diff --git a/tests/networkxml2argvdata/routed-network.argv b/tests/networkxml2argvdata/routed-network.argv +index ac43991..77e802f 100644 +--- a/tests/networkxml2argvdata/routed-network.argv ++++ b/tests/networkxml2argvdata/routed-network.argv +@@ -1,3 +1,3 @@ + @DNSMASQ@ --strict-order --bind-interfaces \ +---local=// --domain-needed --filterwin2k --conf-file= \ ++--local=// --domain-needed --conf-file= \ + --except-interface lo --listen-address 192.168.122.1\ diff --git a/libvirt-fix-unwanted-connection-closing.patch b/libvirt-fix-unwanted-connection-closing.patch new file mode 100644 index 0000000..a5b4279 --- /dev/null +++ b/libvirt-fix-unwanted-connection-closing.patch @@ -0,0 +1,52 @@ +commit 164c03d33bd9d58844921888560baf3f156a1f05 +Author: Christophe Fergeau +Date: Mon Sep 10 12:17:07 2012 +0200 + + Fix unwanted closing of libvirt client connection + + e5a1bee07 introduced a regression in Boxes: when Boxes is left idle + (it's still doing some libvirt calls in the background), the + libvirt connection gets closed after a few minutes. What happens is + that this code in virNetClientIOHandleOutput gets triggered: + + if (!thecall) + return -1; /* Shouldn't happen, but you never know... */ + + and after the changes in e5a1bee07, this causes the libvirt connection + to be closed. + + Upon further investigation, what happens is that + virNetClientIOHandleOutput is called from gvir_event_handle_dispatch + in libvirt-glib, which is triggered because the client fd became + writable. However, between the times gvir_event_handle_dispatch + is called, and the time the client lock is grabbed and + virNetClientIOHandleOutput is called, another thread runs and + completes the current call. 'thecall' is then NULL when the first + thread gets to run virNetClientIOHandleOutput. + + After describing this situation on IRC, danpb suggested this: + + 11:37 < danpb> In that case I think the correct thing would be to change + 'return -1' above to 'return 0' since that's not actually an + error - its a rare, but expected event + + which is what this patch is doing. I've tested it against master + libvirt, and I didn't get disconnected in ~10 minutes while this + happens in less than 5 minutes without this patch. + +diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c +index 43a9814..727ed67 100644 +--- a/src/rpc/virnetclient.c ++++ b/src/rpc/virnetclient.c +@@ -1205,7 +1205,10 @@ virNetClientIOHandleOutput(virNetClientPtr client) + thecall = thecall->next; + + if (!thecall) +- return -1; /* Shouldn't happen, but you never know... */ ++ return 0; /* This can happen if another thread raced with us and ++ * completed the call between the time this thread woke ++ * up from poll()ing and the time we locked the client ++ */ + + while (thecall) { + ssize_t ret = virNetClientIOWriteMessage(client, thecall); diff --git a/libvirt.spec b/libvirt.spec index 0fc46ee..92fa522 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -315,7 +315,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 0.10.1 -Release: 2%{?dist}%{?extra_release} +Release: 3%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root @@ -325,6 +325,10 @@ URL: http://libvirt.org/ %define mainturl stable_updates/ %endif Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz +# Drop unneeded dnsmasq --filterwin2k +Patch1: %{name}-dnsmasq-drop-filterwin2k.patch +# Fix unwanted connection closing, needed for boxes +Patch2: %{name}-fix-unwanted-connection-closing.patch %if %{with_libvirtd} Requires: libvirt-daemon = %{version}-%{release} @@ -589,6 +593,9 @@ Requires: iptables-ipv6 %if %{with_nwfilter} Requires: ebtables %endif +%if %{with_netcf} && (0%{?fedora} >= 18 || 0%{?rhel} >= 7) +Requires: netcf-libs >= 0.2.2 +%endif # needed for device enumeration %if %{with_hal} Requires: hal @@ -1032,6 +1039,8 @@ of recent versions of Linux (and other OSes). %prep %setup -q +%patch1 -p1 +%patch2 -p1 %build %if ! %{with_xen} @@ -1859,6 +1868,11 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/sysctl.d/libvirtd %endif %changelog +* Wed Sep 12 2012 Cole Robinson - 0.10.1-3 +- Fix libvirtd segfault with old netcf-libs (bz 853381) +- Drop unneeded dnsmasq --filterwin2k +- Fix unwanted connection closing, needed for boxes + * Wed Sep 5 2012 Daniel P. Berrange - 0.10.1-2 - Remove dep on ceph RPM (rhbz #854360)