[PATCH 0/6][lxc][v3] Link LXC with USERCR

Daniel Lezcano dlezcano at fr.ibm.com
Wed Mar 31 09:31:38 PDT 2010


Sukadev Bhattiprolu wrote:
> lxc-checkpoint, lxc-restart in the LXC source tree are currently stubs.
> Following set of patches, when applied to LXC and built with USERCR as
> described below, enable enable lxc-checkpoint and lxc-restart of some
> simple containers
>   

Hi Suka,

Thanks for the patchset. Before going further and comment the patchset 
and the TODOs, I would like to succeed to checkpoint something.

Despite your detailed informations, I was not able to checkpoint 
'sleep'. I am sure I am missing something or something is missing :)

[ ... ]

Here is the different steps I did:

 1 -  downloaded the git tree at git://www.linux-cr.org/pub/git/linux-cr
 2 - compiled the kernel making sure I have the following kernel config 
options

 > grep CHECKPOINT .config
CONFIG_CHECKPOINT_SUPPORT=y
CONFIG_SYSVIPC_CHECKPOINT=y
CONFIG_CHECKPOINT=y
CONFIG_CHECKPOINT_DEBUG=y

and of course the needed namespaces.

3 - The level of the code is the commit 
3522c57a9ec6f08a129a78322318abcb4467db28


> 1. Build USERCR
>
> 	$ cd /root
>
> 	$ git-clone git://git.ncl.cs.columbia.edu/pub/git/user-cr.git user-cr
>
> 	$ cd user-cr
>
> 	$ git-checkout ckpt-v20-dev
>
> 	  	Tested with commit e275f77e4a82d228c1df14dbeb691342e32cdac2
> 		as HEAD.
> 	
> 	# Apply following two patches:
>
> 	https://lists.linux-foundation.org/pipermail/containers/2010-March/024037.html
> 	https://lists.linux-foundation.org/pipermail/containers/2010-March/024038.html
>
> 	$ cd /root/user-cr
>
> 	$ KERNELSRC=/root/linux-2.6/ make 
>
> 		Build USERCR by pointing to corresponding kernel-source.
> 		This should create restart.o and checkpoint.o needed by LXC.
>   

4 - followed these steps ^^^^

I had to compile user-cr with the "-fPIC" flags in order to link lxc and 
user-cr.

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: 
/home/dlezcano/work/src/user-cr/checkpoint.o: relocation R_X86_64_32 
against `a local symbol' can not be used when making a shared object; 
recompile with -fPIC
/home/dlezcano/work/src/user-cr/checkpoint.o: could not read symbols: 
Bad value


> 2. Build/install LXC
>
> 	$ cd /root/lxc.git
>
> 	Apply attached patches to LXC (I tested with these patches applied
> 	to commit 9ea8066aa67b808f71f46e346bd7a215e2a355f3)
>   

Ok, I applied the patchset with quilt. It looks like Michel used git 
which is stricter than quilt.
I fixed the typo in configure.ac

> 3. Checkpoint/restart a simple LXC container
>
> 	$ lxc-execute --name foo --rcfile lxc-no-netns.conf -- /bin/sleep 1000
>
> 	$ lxc-checkpoint --name foo --image /root/lxc-foo.ckpt
>   

Ok, I reach this point. But the checkpoint fails always with EINVAL and 
the statefile is empty.

Digging a bit in the userspace + kernel code, I was wondering if the 
user flags match ?

Thanks in advance.
  -- Daniel

ps : I noticed the application is not thawed in the error code path, so 
I have to resume it manually everytime the checkpoint fails.


More information about the Containers mailing list