2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-30 05:48:05 +00:00

6324 Commits

Author SHA1 Message Date
Cyrill Gorcunov
4aaac6d48b build: Simplify piegen usage
- no need for phony pie/piegen, redundant and rather may
  cause double execution of a target;
- drop $(ARCH_DIR) from pie deps, initially it should be syscall-lib,
  but pie/lib.a already has it.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Tested-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 19:43:18 +03:00
Pavel Emelyanov
c271e13f9a lib: fix comilation after previous commit
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 14:29:47 +03:00
Andrew Vagin
3e0e65dd50 test: check restoring external fifo-s
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:50:46 +03:00
Andrew Vagin
c26da2fd59 file: add a general approach for inherited files
How to restore an external file? The problem is that a file
can be opened with different flags (O_APPNED, O_RDWR, O_RONLY,
etc). These flags can't be changed for a file descriptor, so
we can't just duplicate an inherit fd, when we meet an external
file.

A file is external, when we can't access them directly.
CRIU is able to restore a file descriptor, if it knows
how to open it, so we need to provide a way to open
an external file.

The idea of this patch is that we can open an external file
via /proc/self/fd/X where X is an inherit fd.

This approach works for files and fifo.

An example how it can be used:
criu -o dump.log -D dump/fifo.py/6/1 -v4 -t 6 --external file[72:a3e7]
criu -o restore.log -D dump/fifo.py/6/1 -v4 --restore-sibling --inherit-fd fd[4]:file[72:a3e7] --restore-detached

https://github.com/xemul/criu/issues/104

Cc: Saied Kazemi <saied@google.com>
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:50:39 +03:00
Tycho Andersen
a98014f306 seccomp: add a --no-seccomp option to disable dumping seccomp
Sometimes we may want to use CRIU on older kernels which don't support
dumping seccomp state where we don't actually care about the seccomp state.
Of course this is unsafe, but it does allow for c/r of things using
seccomp on these older kernels in some cases. When the task is in
SECCOMP_MODE_STRICT or SECCOMP_MODE_FILTER with filters that block the
syscalls criu's parasite code needs, the dump will still fail.

Note that we disable seccomp by simply feigning that we are in mode 0. This
is a little hacky, but avoids distributing ifs throughout the code and
keeps them in this one place.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
CC: Saied Kazemi <saied@google.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:46:55 +03:00
Andrew Vagin
1741438f81 ns: add an ability to not dump properties for a specified namespace
Docker requested an option, when network devices and routes are not
dumped and not restored. Instead of this Docker will call libnetwork
hook to tune netns from the setup-namespaces action.

Cc: Saied Kazemi <saied@google.com>
Tested-by: Ross Boucher <boucher@gmail.com>
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:32:23 +03:00
Tycho Andersen
b13a132eab gitignore: ignore more test dirs
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:29:28 +03:00
Tycho Andersen
7ae89758ac tests: remember to clean everything on make clean
If we forget to clean some of this stuff, we can get into strange states
where zdtm.py thinks it has constructed the root, but really hasn't, and
can't construct the root because it partially exists.

v2: kill all the extra debugging crap from v1

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:29:03 +03:00
Cyrill Gorcunov
f7bc840091 build: Fix travis arch
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-17 13:26:39 +03:00
Pavel Emelyanov
a501b4804b show: Remove deprecated code
The 'show' action has been deprecated since 1.6, let's finally drop it.

The print_data() routine is kept for yet another (to be deprecated too)
feature called 'criu exec'.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
2016-02-16 11:00:11 +03:00
Kirill Tkhai
a423910441 mounts: Skip already bound siblings in propagate_siblings()
This function may be called several times for a mnt_share family.
The second call with a mi, which was not a bind source during the
first call, leads to double dependence:

a <-> b <-> c

1)propagate_siblings(a)

b->bind = a;
c->bind = a;

2)propagate_siblings(b)

c->bind = b;
(a is not set, because its mounted is 1).

So during c's bind mount criu use b's root and refers to a wrong
directory.

The reproduction: mntns_root_bind02 test.

The patch fixes the problem.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Acked-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:50:55 +03:00
Kirill Tkhai
076c73b21a zdtm: Add mntns_root_bind02 test
It's an extension of mntns_root_bind, which is differ by one more bind mount.

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Acked-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:50:52 +03:00
Cyrill Gorcunov
3a234722df test: jenkins -- Fix path for pycriu
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:48:15 +03:00
Cyrill Gorcunov
e5510d16f0 build: memfd -- Use SYS_memfd_create for libc sake
Just got a situation inside VM where pretty new
kernel with memfd has been installed (and as result
__NR_memfd_create shipped with kernel headers
is provided as well) but libc was old having no
SYS_memfd_create defined. Thus we've got an error
because we use exactly SYS_ number for calls.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:47:51 +03:00
Cyrill Gorcunov
9aebdc697c build: docs -- Call cleaning on general clean action
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:47:25 +03:00
Dmitry Safonov
eb66a97f65 criu/makefile: fix build (DEFINES array to CFLAGS)
I have CONFIG_HAS_LIBBSD, but -DCONFIG_HAS_LIBBSD isn't passed to
compiler. Fix for the following error:
<...>
  CC       cr-dedup.o
  CC       cr-dump.o
cr-dump.c: In function ‘dump_filemap’:
cr-dump.c:382:3: error: implicit declaration of function ‘strlcpy’ [-Werror=implicit-function-declaration]
   strlcpy(aufs_link.name, vma_area->aufs_rpath,
   ^
cc1: all warnings being treated as errors
/home/japdoll/tools/criu/scripts/nmk/scripts/rules.mk:53: recipe for target 'cr-dump.o' failed
make[2]: *** [cr-dump.o] Error 1
Makefile:146: recipe for target 'built-in.o' failed
make[1]: *** [built-in.o] Error 2
Makefile:109: recipe for target 'criu' failed
make: *** [criu] Error 2

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:46:56 +03:00
Dmitry Safonov
69fbdfaf52 criu/makefile: built-in.o already is in PROGRAM-BUILTINS
Delete it from there.

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:46:41 +03:00
Pavel Tikhomirov
254a36d9b3 zdtm/ipc: migrate the array of more than one semaphore
We missed restore problems with multiple semaphores in one array
with vzt-cpt, enhance the test to catch it.

The problem was the change of 'struct sem' size which lead to wrong
memcpy of sem_array->sem_base in our kernel checkpointing.

Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:44:34 +03:00
Pavel Emelyanov
64cce1ccba nmk: Define FIND variable
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-16 10:43:18 +03:00
Cyrill Gorcunov
ca6911adf9 build: Drop protobuf/ from the sources
All sitting in images/ already.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 19:24:42 +03:00
Cyrill Gorcunov
40c5b331aa build: clean -- Remove criu itself
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 19:24:06 +03:00
Cyrill Gorcunov
47b59b4797 build: criu -- Fix deps for pie/lib.a and criu's built-in.o
- while arch-lib already depends on syscall lib better to put
   it into deps explicitly
 - criu's built-in.o must depend on the pie target rather than
   pie/lib.a only because it uses -blob.h for internal deps

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 19:23:39 +03:00
Cyrill Gorcunov
f96718b3e3 test: zdtm.py -- Fix criu reference
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 19:22:44 +03:00
Cyrill Gorcunov
06a96d22cd .gitignore -- Add back files to ignore
Have been removed while developing criu-2
series, need to check that they are cleaned
during "clean" stage.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 19:21:12 +03:00
Andrei Vagin
1c2c1f45f7 crtools: add Dockerfile to build criu on armv7hf, aarch64, ppc64le
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:57 +03:00
Tycho Andersen
d45116ff8b build: crit -- Fix install target
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:53 +03:00
Tycho Andersen
fb0126fda6 build: criu.pc -- Move it to lib/c
This is (I think) where it was intended to go based on the gitignore
rename, so let's actually generate it and install it to/from there.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:51 +03:00
Laurent Dufour
0ff731a6d0 build: test -- Fix criu-rtc.so build error
Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:48 +03:00
Cyrill Gorcunov
db6cb69394 build: Move everything criu related into criu directory
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:45 +03:00
Cyrill Gorcunov
3410d39514 build: Move crit tool into crit directory
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:42 +03:00
Cyrill Gorcunov
da0eb1483b build: Move C and Python libraries into lib
Both CRIU library and CRIT python data are moved into
lib/c and lib/py.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:39 +03:00
Cyrill Gorcunov
f07970ae7b build: Override ARCH to x86 for travis sake
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:36 +03:00
Cyrill Gorcunov
e71e063890 build: Drop docs about old build engine
No longer valid.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:30 +03:00
Cyrill Gorcunov
594fb52753 build: Move @protobuf dir into @images
But keep @protobuf as a symlink: we have
this path encoded in sources. Gonna be
removed with time.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:27 +03:00
Cyrill Gorcunov
319f4a08a8 build: Import nmk on toplevel
- no more x86_64 in @ARCH, as in kernel it's traditional x86 entry
 - @build renamed to @build-old, will be deprecated

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:23 +03:00
Cyrill Gorcunov
d7016f1475 build: nmk -- Initial import
This is initial import of NMK engine which we gonna use for
CRIU and related tools building.

It's very tiny and while here we merge it as is in future
it gonna be rather a submodule from

	https://github.com/cyrillos/nmk

An idea is to have unified build engine for most tools
we're gonna use.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-15 15:32:20 +03:00
Dmitry Safonov
9445c31642 make: remove pie/pigen/*.{gcda, gcno, gcov} on clean
Not nice to leave them.

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-12 16:54:08 +03:00
Dmitry Safonov
6effc59e2d zdtm.py: specify python version
Otherwise it may suck on some distros (Arch i.e):
make zdtm
make[2]: Entering directory '/home/japdoll/tools/criu/test'
./zdtm.py run -a --parallel 2
  File "./zdtm.py", line 33
    print "        ..."
                      ^
SyntaxError: Missing parentheses in call to 'print'
Makefile:25: recipe for target 'zdtm' failed
make[2]: *** [zdtm] Error 1
make[2]: Leaving directory '/home/japdoll/tools/criu/test'
Makefile:9: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/japdoll/tools/criu/test'
Makefile:258: recipe for target 'test' failed
make: *** [test] Error 2

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-12 16:54:05 +03:00
Dmitry Safonov
5d2d54a849 makefile: make DEBUG & GMONLDOPT simply expanded variables
As they store just a value, not any recursive expands, lets simplify.

Impact: cleanup

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-12 16:54:03 +03:00
Dmitry Safonov
bd0c5281fd makefile: move PROTOUFIX export to arm section
As SRCARCH := arm defined two lines above, no need for additional ifeq.

Impact: cleanup

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Reviewed-by: Christopher Covington <cov@codeaurora.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-12 16:54:01 +03:00
Tycho Andersen
518b444012 tests: get rid of HAVE_SECCOMP nonsense
Because of the #undef (probably left over from some debugging I did that
accidentally got committed), this test never ran. Anyway, this is all
unnecessary because we can just use the seccomp_filter feature flag in the
tests.

Also reenable the seccomp_filter_tsync test.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-12 16:42:53 +03:00
Tycho Andersen
726d87d9b9 tests: get rid of seccomp_filter_tsync.checkskip
This is superceded by criu check seccomp_filter and doesn't work on some
systems anyway.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-12 16:42:50 +03:00
Pavel Emelyanov
5b82e5c448 zdtm: Temporarily disable seccomp_filter_tsync test
It always exits with "no support" message and checkskip works strangely. Need
to resolve those two first."

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-11 13:40:13 +03:00
Tycho Andersen
7684e832e0 rst-malloc: s/rst_mem_cpos/rst_mem_align_cpos
Since we need to align some allocations (but not most of them), let's
always align them when checking the current position.

v2: always rst_mem_align() before the beginning of each "set" of
    allocations
v3: merge rst_mem_align and rst_mem_cpos

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
CC: Cyrill Gorcunov <gorcunov@gmail.com>
CC: Andrey Vagin <avagin@openvz.org>
Acked-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-11 12:57:22 +03:00
Tycho Andersen
c9393ec5dc rst alloc: align on reporting cpos too
Since we align in rst_mem_alloc, we should also align when reporting the
current position; if we don't and things get unlucky, we report a different
position than where the pointer is actually allocated, which fucks things
up quite bad :)

Closes #111

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-10 16:36:19 +03:00
Andrey Vagin
7fe2bee80d seize: detach from external processes before killing dumped processes (v2)
When we kill a container, all processes from its pidns are killed by
SIGKILL, but we don't expect that someone from the freezer cgroup will
be killed too if it was not dumped.

(00.468446) Error (seize.c:439): Unexpected child 79162
(00.468489) Error (seize.c:440): BUG at seize.c:440

This situation is posiable, if someone enters into pidns by setns.

In this patch, we deatches from extra processes before killing dumped
processes. In this case, we are not get signals if someone is killed.

v2: use process_to_wait insread of adding a new var

https://jira.sw.ru/browse/PSBM-43795
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-09 11:47:36 +03:00
Andrew Vagin
0ce60fdb85 pie: print an error and notify criu in error cases
Cc: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Acked-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-09 11:45:44 +03:00
Cyrill Gorcunov
15850963f9 memfd: Fix typos in memfd tests
I manage to miss source refresh. Sorry.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-09 11:44:55 +03:00
Cyrill Gorcunov
d54e7bbfd1 memfd: Use CONFIG_HAS_MEMFD to not fail on old kernels
memfd is available since 3.16 kernel so don't fail
building criu on earlier kernels but simply don't
use it on older kernels.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-08 22:15:05 +03:00
Cyrill Gorcunov
ab5442de40 memfd: Test for __NR_memfd_create during building
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-08 22:14:38 +03:00