This commit is contained in:
parent
26f8e50881
commit
e7e16a6848
53
clone.patch
Normal file
53
clone.patch
Normal file
@ -0,0 +1,53 @@
|
||||
--- src/lxc_container.c
|
||||
+++ src/lxc_container.c
|
||||
@@ -604,6 +604,9 @@ int lxcContainerStart(virDomainDefPtr de
|
||||
lxc_child_argv_t args = { def, nveths, veths, control, ttyPath };
|
||||
|
||||
/* allocate a stack for the container */
|
||||
+#ifdef __ia64__
|
||||
+ stacksize *= 2;
|
||||
+#endif
|
||||
if (VIR_ALLOC_N(stack, stacksize) < 0) {
|
||||
lxcError(NULL, NULL, VIR_ERR_NO_MEMORY, NULL);
|
||||
return -1;
|
||||
@@ -615,7 +618,11 @@ int lxcContainerStart(virDomainDefPtr de
|
||||
if (def->nets != NULL)
|
||||
flags |= CLONE_NEWNET;
|
||||
|
||||
+#ifdef __ia64__
|
||||
+ pid = __clone2(lxcContainerChild, stack, stacksize, flags, &args);
|
||||
+#else
|
||||
pid = clone(lxcContainerChild, stacktop, flags, &args);
|
||||
+#endif
|
||||
VIR_FREE(stack);
|
||||
DEBUG("clone() returned, %d", pid);
|
||||
|
||||
@@ -641,18 +648,26 @@ int lxcContainerAvailable(int features)
|
||||
char *childStack;
|
||||
char *stack;
|
||||
int childStatus;
|
||||
+ int stacksize = getpagesize() * 4;
|
||||
|
||||
if (features & LXC_CONTAINER_FEATURE_NET)
|
||||
flags |= CLONE_NEWNET;
|
||||
|
||||
- if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) {
|
||||
+#ifdef __ia64__
|
||||
+ stacksize *= 2;
|
||||
+#endif
|
||||
+ if (VIR_ALLOC_N(stack, stacksize) < 0) {
|
||||
DEBUG0("Unable to allocate stack");
|
||||
return -1;
|
||||
}
|
||||
|
||||
- childStack = stack + (getpagesize() * 4);
|
||||
+ childStack = stack + stacksize;
|
||||
|
||||
+#ifdef __ia64__
|
||||
+ cpid = __clone2(lxcContainerDummyChild, stack, stacksize, flags, NULL);
|
||||
+#else
|
||||
cpid = clone(lxcContainerDummyChild, childStack, flags, NULL);
|
||||
+#endif
|
||||
VIR_FREE(stack);
|
||||
if (cpid < 0) {
|
||||
DEBUG("clone call returned %s, container support is not enabled",
|
@ -21,7 +21,7 @@
|
||||
%define with_lxc 0
|
||||
%define with_selinux 0
|
||||
# Xen is available only on i386 x86_64
|
||||
%ifnarch i386 i586 x86_64
|
||||
%ifnarch %ix86 x86_64
|
||||
%define with_xen 0
|
||||
%endif
|
||||
%if 0%{?suse_version} > 1100
|
||||
@ -49,7 +49,7 @@ License: LGPL v2.1 or later
|
||||
Group: Development/Libraries/C and C++
|
||||
AutoReqProv: yes
|
||||
Version: 0.4.6
|
||||
Release: 4
|
||||
Release: 5
|
||||
Summary: A C toolkit to interract with the virtualization capabilities of Linux
|
||||
Requires: readline
|
||||
Requires: ncurses
|
||||
@ -79,6 +79,7 @@ Patch9: lxcsched.patch
|
||||
Patch10: lxcvirsh.patch
|
||||
Patch11: cgmajor.patch
|
||||
Patch12: lxcpty.patch
|
||||
Patch13: clone.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -182,6 +183,7 @@ Authors:
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13
|
||||
rm po/no.*
|
||||
|
||||
%build
|
||||
@ -195,7 +197,7 @@ rm po/no.*
|
||||
%define _with_selinux --with-selinux
|
||||
%endif
|
||||
autoreconf -f -i
|
||||
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
|
||||
export CFLAGS="$RPM_OPT_FLAGS"
|
||||
%configure %{?_without_xen} \
|
||||
%{?_without_lxc} \
|
||||
%{?_with_selinux} \
|
||||
|
Loading…
Reference in New Issue
Block a user