Log and ignore NUMA topology problems (rhbz #506590)
This commit is contained in:
parent
40a867daeb
commit
8841355697
|
@ -0,0 +1,133 @@
|
|||
diff -rup libvirt-0.6.2.orig/src/capabilities.c libvirt-0.6.2.new/src/capabilities.c
|
||||
--- libvirt-0.6.2.orig/src/capabilities.c 2009-03-24 12:31:01.000000000 +0000
|
||||
+++ libvirt-0.6.2.new/src/capabilities.c 2009-08-13 12:10:57.000000000 +0100
|
||||
@@ -122,6 +122,18 @@ virCapabilitiesFreeGuest(virCapsGuestPtr
|
||||
}
|
||||
|
||||
|
||||
+void
|
||||
+virCapabilitiesFreeNUMAInfo(virCapsPtr caps)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0 ; i < caps->host.nnumaCell ; i++)
|
||||
+ virCapabilitiesFreeHostNUMACell(caps->host.numaCell[i]);
|
||||
+ VIR_FREE(caps->host.numaCell);
|
||||
+ caps->host.nnumaCell = 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/**
|
||||
* virCapabilitiesFree:
|
||||
* @caps: object to free
|
||||
@@ -141,9 +153,7 @@ virCapabilitiesFree(virCapsPtr caps) {
|
||||
for (i = 0 ; i < caps->host.nfeatures ; i++)
|
||||
VIR_FREE(caps->host.features[i]);
|
||||
VIR_FREE(caps->host.features);
|
||||
- for (i = 0 ; i < caps->host.nnumaCell ; i++)
|
||||
- virCapabilitiesFreeHostNUMACell(caps->host.numaCell[i]);
|
||||
- VIR_FREE(caps->host.numaCell);
|
||||
+ virCapabilitiesFreeNUMAInfo(caps);
|
||||
|
||||
for (i = 0 ; i < caps->host.nmigrateTrans ; i++)
|
||||
VIR_FREE(caps->host.migrateTrans[i]);
|
||||
diff -rup libvirt-0.6.2.orig/src/capabilities.h libvirt-0.6.2.new/src/capabilities.h
|
||||
--- libvirt-0.6.2.orig/src/capabilities.h 2009-03-24 12:31:01.000000000 +0000
|
||||
+++ libvirt-0.6.2.new/src/capabilities.h 2009-08-13 11:50:46.000000000 +0100
|
||||
@@ -118,6 +118,9 @@ extern void
|
||||
virCapabilitiesFree(virCapsPtr caps);
|
||||
|
||||
extern void
|
||||
+virCapabilitiesFreeNUMAInfo(virCapsPtr caps);
|
||||
+
|
||||
+extern void
|
||||
virCapabilitiesSetMacPrefix(virCapsPtr caps,
|
||||
unsigned char *prefix);
|
||||
|
||||
diff -rup libvirt-0.6.2.orig/src/libvirt_private.syms libvirt-0.6.2.new/src/libvirt_private.syms
|
||||
--- libvirt-0.6.2.orig/src/libvirt_private.syms 2009-04-03 15:04:28.000000000 +0100
|
||||
+++ libvirt-0.6.2.new/src/libvirt_private.syms 2009-08-13 11:50:59.000000000 +0100
|
||||
@@ -24,6 +24,7 @@ virCapabilitiesDefaultGuestEmulator;
|
||||
virCapabilitiesDefaultGuestMachine;
|
||||
virCapabilitiesFormatXML;
|
||||
virCapabilitiesFree;
|
||||
+virCapabilitiesFreeNUMAInfo;
|
||||
virCapabilitiesNew;
|
||||
virCapabilitiesSetMacPrefix;
|
||||
virCapabilitiesGenerateMac;
|
||||
diff -rup libvirt-0.6.2.orig/src/lxc_conf.c libvirt-0.6.2.new/src/lxc_conf.c
|
||||
--- libvirt-0.6.2.orig/src/lxc_conf.c 2009-01-31 09:04:17.000000000 +0000
|
||||
+++ libvirt-0.6.2.new/src/lxc_conf.c 2009-08-13 11:58:41.000000000 +0100
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "lxc_conf.h"
|
||||
#include "nodeinfo.h"
|
||||
#include "virterror_internal.h"
|
||||
+#include "logging.h"
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_LXC
|
||||
|
||||
@@ -46,8 +47,14 @@ virCapsPtr lxcCapsInit(void)
|
||||
0, 0)) == NULL)
|
||||
goto no_memory;
|
||||
|
||||
- if (virCapsInitNUMA(caps) < 0)
|
||||
- goto no_memory;
|
||||
+ /* Some machines have problematic NUMA toplogy causing
|
||||
+ * unexpected failures. We don't want to break the QEMU
|
||||
+ * driver in this scenario, so log errors & carry on
|
||||
+ */
|
||||
+ if (virCapsInitNUMA(caps) < 0) {
|
||||
+ virCapabilitiesFreeNUMAInfo(caps);
|
||||
+ VIR_WARN0("Failed to query host NUMA topology, disabling NUMA capabilities");
|
||||
+ }
|
||||
|
||||
/* XXX shouldn't 'borrow' KVM's prefix */
|
||||
virCapabilitiesSetMacPrefix(caps, (unsigned char []){ 0x52, 0x54, 0x00 });
|
||||
diff -rup libvirt-0.6.2.orig/src/qemu_conf.c libvirt-0.6.2.new/src/qemu_conf.c
|
||||
--- libvirt-0.6.2.orig/src/qemu_conf.c 2009-08-13 11:44:11.000000000 +0100
|
||||
+++ libvirt-0.6.2.new/src/qemu_conf.c 2009-08-13 11:45:34.000000000 +0100
|
||||
@@ -376,8 +376,14 @@ virCapsPtr qemudCapsInit(void) {
|
||||
/* Using KVM's mac prefix for QEMU too */
|
||||
virCapabilitiesSetMacPrefix(caps, (unsigned char[]){ 0x52, 0x54, 0x00 });
|
||||
|
||||
- if (virCapsInitNUMA(caps) < 0)
|
||||
- goto no_memory;
|
||||
+ /* Some machines have problematic NUMA toplogy causing
|
||||
+ * unexpected failures. We don't want to break the QEMU
|
||||
+ * driver in this scenario, so log errors & carry on
|
||||
+ */
|
||||
+ if (virCapsInitNUMA(caps) < 0) {
|
||||
+ virCapabilitiesFreeNUMAInfo(caps);
|
||||
+ VIR_WARN0("Failed to query host NUMA topology, disabling NUMA capabilities");
|
||||
+ }
|
||||
|
||||
/* First the pure HVM guests */
|
||||
for (i = 0 ; i < ARRAY_CARDINALITY(arch_info_hvm) ; i++)
|
||||
diff -rup libvirt-0.6.2.orig/src/uml_conf.c libvirt-0.6.2.new/src/uml_conf.c
|
||||
--- libvirt-0.6.2.orig/src/uml_conf.c 2009-01-31 09:04:18.000000000 +0000
|
||||
+++ libvirt-0.6.2.new/src/uml_conf.c 2009-08-13 11:58:47.000000000 +0100
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "memory.h"
|
||||
#include "nodeinfo.h"
|
||||
#include "verify.h"
|
||||
+#include "logging.h"
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_UML
|
||||
|
||||
@@ -62,8 +63,14 @@ virCapsPtr umlCapsInit(void) {
|
||||
0, 0)) == NULL)
|
||||
goto no_memory;
|
||||
|
||||
- if (virCapsInitNUMA(caps) < 0)
|
||||
- goto no_memory;
|
||||
+ /* Some machines have problematic NUMA toplogy causing
|
||||
+ * unexpected failures. We don't want to break the QEMU
|
||||
+ * driver in this scenario, so log errors & carry on
|
||||
+ */
|
||||
+ if (virCapsInitNUMA(caps) < 0) {
|
||||
+ virCapabilitiesFreeNUMAInfo(caps);
|
||||
+ VIR_WARN0("Failed to query host NUMA topology, disabling NUMA capabilities");
|
||||
+ }
|
||||
|
||||
if ((guest = virCapabilitiesAddGuest(caps,
|
||||
"uml",
|
|
@ -66,7 +66,7 @@
|
|||
Summary: Library providing a simple API virtualization
|
||||
Name: libvirt
|
||||
Version: 0.6.2
|
||||
Release: 14%{?dist}%{?extra_release}
|
||||
Release: 15%{?dist}%{?extra_release}
|
||||
License: LGPLv2+
|
||||
Group: Development/Libraries
|
||||
Source: libvirt-%{version}.tar.gz
|
||||
|
@ -116,6 +116,8 @@ Patch20: libvirt-0.6.2-pci-device-crash.patch
|
|||
Patch21: libvirt-0.6.2-qemu-name-uniqueness.patch
|
||||
# rhbz #479517
|
||||
Patch22: libvirt-0.6.2-buf-locale-escape.patch
|
||||
# rhbz #506590
|
||||
Patch23: libvirt-0.6.2-numa-ignore-fail.patch
|
||||
|
||||
# Not for upstream. Temporary hack till PulseAudio autostart
|
||||
# problems are sorted out when SELinux enforcing
|
||||
|
@ -290,6 +292,7 @@ of recent versions of Linux (and other OSes).
|
|||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
|
||||
%patch200 -p0
|
||||
|
||||
|
@ -613,6 +616,9 @@ fi
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Thu Aug 13 2009 Daniel P. Berrange <berrange@redhat.com> - 0.6.2-15.fc11
|
||||
- Log and ignore NUMA topology problems (rhbz #506590)
|
||||
|
||||
* Wed Aug 5 2009 Daniel P. Berrange <berrange@redhat.com> - 0.6.2-14.fc11
|
||||
- Fix crash when attaching/detaching non-existant PCI device (rhbz #510907)
|
||||
- Fix QEMU guest name/uuid uniqueness checks (rhbz #507405)
|
||||
|
|
Loading…
Reference in New Issue