Pavel Emelyanov xemul at parallels.com
Mon Dec 14 02:09:06 PST 2015


Right now in criu we have at least two parts that are useful by themselves
and sometimes people ask for those as separate libraries. The parts are -- 
the implementation of infecting tasks with random blob (parasite) and TCP
checkpoint-restore code.

So by the next release I propose to re-suffle the CRIU source tree and make
effectively three distinguished components under the same name -- the criu 
tool itself, the infecting library and tool and the TCP CR library. For the
infecting library we've once tried to pull this into a separate project 
called 'compel' (https://github.com/xemul/compel), with core library, helper 
libs and CLI tool, but with no luck -- it was so basic to CRIU that patching
them independently was too complex. Hopefully maintaining compel in the criu
tree at least for the first time would make this finally happen.

And, while tossing the code around, it would also make sense to make some
order in the source tree at least putting CRIT into its own subdir, putting
zdtm tests into one place and moving the legacy tests aside.

With all these changes I think it would make sense to do tag criu 2.0 :)

As the initial suggestion on the code structure and names I have:

crtools/        for the existing criu code
   pycriu/      for python bindings
   lib/         for C library
   go/          for go binding (if we ever have one)

The output of this would be criu binary, lib/libcriu.so and pycriu/ stuff.
The criu binary would depend on the compel and libsockcr .a libs below.

compel/         for the parasite engine
   lib/         for the library
   tool/        for the command line stuff

The output of this is the compel tool that would help to build ready for
injection blobs and libcompel.so (and libcompel.a) for run-time infection.

libsockcr/      for TCP checkpoint-restore

The output is libsockcr.so (and libsockcr.a)

crit/           for the crit tool

The output here is crit (and potential extensions it might have).

Better suggestions on the code structure, component names and other stuff 
that's worth having in 2.0 are welcome!

-- Pavel

More information about the CRIU mailing list