ping > -----Original Message----- > From: Chen Hanxiao [mailto:chenhanxiao@xxxxxxxxxxxxxx] > Sent: Monday, November 18, 2013 4:03 PM > To: libvir-list@xxxxxxxxxx > Cc: chenhanxiao@xxxxxxxxxxxxxx > Subject: [PATCH]lxc: don't do duplicate work when getting pagesize > > From: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> > > Don't do duplicate work when getting pagesize. > With some debug logs added. > > Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxxxxxxx> > --- > src/lxc/lxc_container.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > > diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c > index 255c711..e85d01c 100644 > --- a/src/lxc/lxc_container.c > +++ b/src/lxc/lxc_container.c > @@ -144,6 +144,7 @@ int lxcContainerHasReboot(void) > int cmd, v; > int status; > char *tmp; > + int stacksize = getpagesize() * 4; > > if (virFileReadAll("/proc/sys/kernel/ctrl-alt-del", 10, &buf) < 0) > return -1; > @@ -160,10 +161,12 @@ int lxcContainerHasReboot(void) > VIR_FREE(buf); > cmd = v ? LINUX_REBOOT_CMD_CAD_ON : > LINUX_REBOOT_CMD_CAD_OFF; > > - if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) > + if (VIR_ALLOC_N(stack, stacksize) < 0) { > + VIR_DEBUG("Unable to allocate stack"); > return -1; > + } > > - childStack = stack + (getpagesize() * 4); > + childStack = stack + stacksize; > > cpid = clone(lxcContainerRebootChild, childStack, flags, &cmd); > VIR_FREE(stack); > @@ -2011,8 +2014,10 @@ int lxcContainerStart(virDomainDefPtr def, > }; > > /* allocate a stack for the container */ > - if (VIR_ALLOC_N(stack, stacksize) < 0) > + if (VIR_ALLOC_N(stack, stacksize) < 0) { > + VIR_DEBUG("Unable to allocate stack"); > return -1; > + } > stacktop = stack + stacksize; > > cflags = > CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|SIGCHLD > ; > @@ -2060,6 +2065,7 @@ int lxcContainerAvailable(int features) > int cpid; > char *childStack; > char *stack; > + int stacksize = getpagesize() * 4; > > if (features & LXC_CONTAINER_FEATURE_USER) > flags |= CLONE_NEWUSER; > @@ -2067,12 +2073,12 @@ int lxcContainerAvailable(int features) > if (features & LXC_CONTAINER_FEATURE_NET) > flags |= CLONE_NEWNET; > > - if (VIR_ALLOC_N(stack, getpagesize() * 4) < 0) { > + if (VIR_ALLOC_N(stack, stacksize) < 0) { > VIR_DEBUG("Unable to allocate stack"); > return -1; > } > > - childStack = stack + (getpagesize() * 4); > + childStack = stack + stacksize; > > cpid = clone(lxcContainerDummyChild, childStack, flags, NULL); > VIR_FREE(stack); > -- > 1.8.2.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list