Index: libvirt-1.2.2/src/lxc/lxc_container.c =================================================================== --- libvirt-1.2.2.orig/src/lxc/lxc_container.c +++ libvirt-1.2.2/src/lxc/lxc_container.c @@ -162,12 +162,19 @@ int lxcContainerHasReboot(void) VIR_FREE(buf); cmd = v ? LINUX_REBOOT_CMD_CAD_ON : LINUX_REBOOT_CMD_CAD_OFF; +#ifdef __ia64__ + stacksize *= 2; +#endif if (VIR_ALLOC_N(stack, stacksize) < 0) return -1; childStack = stack + stacksize; +#ifdef __ia64__ + cpid = __clone2(lxcContainerRebootChild, childStack, stacksize, flags, &cmd); +#else cpid = clone(lxcContainerRebootChild, childStack, flags, &cmd); +#endif VIR_FREE(stack); if (cpid < 0) { virReportSystemError(errno, "%s", @@ -2004,6 +2011,9 @@ int lxcContainerStart(virDomainDefPtr de .handshakefd = handshakefd }; +#ifdef __ia64__ + stacksize *= 2; +#endif /* allocate a stack for the container */ if (VIR_ALLOC_N(stack, stacksize) < 0) return -1; @@ -2029,7 +2039,11 @@ int lxcContainerStart(virDomainDefPtr de cflags |= CLONE_NEWNET; } +#ifdef __ia64__ + pid = __clone2(lxcContainerChild, stacktop, stacksize, cflags, &args); +#else pid = clone(lxcContainerChild, stacktop, cflags, &args); +#endif VIR_FREE(stack); VIR_DEBUG("clone() completed, new container PID is %d", pid); @@ -2063,12 +2077,19 @@ int lxcContainerAvailable(int features) if (features & LXC_CONTAINER_FEATURE_NET) flags |= CLONE_NEWNET; +#ifdef __ia64__ + stacksize *= 2; +#endif if (VIR_ALLOC_N(stack, stacksize) < 0) return -1; childStack = stack + stacksize; +#ifdef __ia64__ + cpid = __clone2(lxcContainerDummyChild, childStack, stacksize, flags, NULL); +#else cpid = clone(lxcContainerDummyChild, childStack, flags, NULL); +#endif VIR_FREE(stack); if (cpid < 0) { char ebuf[1024] ATTRIBUTE_UNUSED;