2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-09-05 08:45:49 +00:00
Commit Graph

6509 Commits

Author SHA1 Message Date
Svyatoslav Vlasov
bb7d912e40 tmpfiles: implement user tmp files feature
Add new action script tmp-files.sh, which allows user to
add files that can be lost between checkpoint and restore to the dump.
User files are stored in .tar.gz archive.
Tar command does all the file paths and attributes related work.

Fixes #65

Signed-off-by: Svyatoslav Vlasov <svloyso@gmail.com>
Signed-off-by: Eugene Batalov <eabatalov89@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-09 12:48:33 +03:00
Pavel Emelyanov
7f1a4a160a criu: Version 2.0
So, here it is. We planned not only to re-shuffle the code, but
also to provide compel thing to people, but have only managed to
do the former. OK, the compel then would go in 2.1 :)

But, we also change the dev-n-release model, so from now on we
have 2 branches and release stable one every month to show new
stuff earlier.

Have fun!

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
v2.0
2016-03-07 20:56:59 +03:00
Andrew Vagin
cebc6c3796 mount: don't mount an external mount before all members of a shared group
otherwise this mount will not be propagated into non-existant mounts

Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-06 23:28:42 +03:00
Tycho Andersen
b4ffeeeba2 cgroup: don't include trailing / in cgns_prefix
We could do the math on the consuming side (and indeed, I tried), but it
seems much cleaner to just not include this in the first place so that all
consumers of it don't need to do the same thing.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-06 23:28:36 +03:00
Tycho Andersen
8b33970e51 cgroup: skip restoring special cpuset props during main prop restore
As the comment says, we don't need to restore speical cpuset props twice,
and indeed it can cause the restore to fail, e.g.:

(00.092356) Error (cgroup.c:1240): cg: Failed writing 0-3 to cpuset//lxc/centoss/cpuset.cpus
(00.582490)     18: Error (cgroup.c:1009): cg: Can't move 18 into systemd//lxc/centos/system.slice/systemd-journald.service/tasks (-1/-1): No such file or directory
(00.582497)     18: Error (cgroup.c:1124): cg: Can't move into systemd//lxc/centos/system.slice/systemd-journald.service/tasks (-1/-1): No such file or directory
(00.582567)     43: Error (cgroup.c:1009): cg: Can't move 43 into systemd//lxc/centos/system.slice/console-getty.service/tasks (-1/-1): No such file or directory
(00.582573)     43: Error (cgroup.c:1124): cg: Can't move into systemd//lxc/centos/system.slice/console-getty.service/tasks (-1/-1): No such file or directory
(00.582886)      1: Error (cr-restore.c:1306): 18 exited, status=1
(00.594670) Error (cr-restore.c:1308): 7906 killed by signal 9
(00.623099) Error (cr-restore.c:2138): Restoring FAILED.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-04 20:08:54 +03:00
Tycho Andersen
f4832fb2bb cgroup: use perror on failed property write
The errno here is useful information for debugging, we should also print
it.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-04 20:08:27 +03:00
Tycho Andersen
bddfc1b309 cgroup: collect_cgroups in get_cg_set
Instead of all the flags and checks in dump_task_cgroup, let's just collect
every new non-criu cgset.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 20:54:33 +03:00
Andrew Vagin
c852a130fc criu: remove a pid file in error cases
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 20:52:28 +03:00
Pavel Emelyanov
160a0d3337 cgroup: Unshare cgroup namespaces only if we need to
The call to unshare(CLONE_NEWCGROUP) is done unconditionally
in prepare_cgns(), which is wrong -- some detection of the
fact that we have this ns should be there.

This detection (as I see it) -- is whether we've found at
least one cgroup with cgns prefix.

Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 16:12:39 +03:00
Andrew Vagin
3d95598229 files: remove ghost directories when a restore failed
The current code doesn't work becuase ghost files and directories
have different formats.

ghost directories are created from a root task, but they are
cleaned up from the criu process, so reg_file_info is allocated
from shared memory and is_dir is added into it.

Fixes #120

Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 14:03:38 +03:00
Andrew Vagin
0023e2e573 zdtm: check that a command completes successfully after a fault (v5)
I suggest to inject a fault and than try to execute the same command
again without a fault to check that it will complete successfully.

v2: skip a parasite blob when we are checking vma-s
v3: remove a loop for two iterations
v4: clean up
v5: call fault hooks from one place
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 14:02:57 +03:00
Tycho Andersen
fd972a739c tests: fix cgroupns test to not use nested namespaces
Before we were unshare(CLONE_NEWCGROUP)ing in a child task, which meant
that we couldn't c/r this test once we forbid nested cgroup namespaces.

Instead, use a new strategy for testing cgroup namespaces: set up the
namespace before forking the test task so there is no nesting, and then do
a setns back to init's ns to check the cgroup namespace of the test. This
doesn't work in the 'ns' flavor because init in the test's pid ns is the
test itself. There is a bit of a chicken and egg problem here, though,
because if we set it up after test_init(), we can't unshare because that
would be a nested cgroup ns.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 14:00:13 +03:00
Tycho Andersen
0a1b24637d cgroup: only unshare once when moving into cgns
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:59:39 +03:00
Tycho Andersen
89c7475c3d cgroup: only set up the cgns prefix once
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:58:21 +03:00
Tycho Andersen
9f8140878d cgroup: only inspect the root task for cgns prefixes
Because we don't support nested cgroup namespaces, we can just grab the
cgns prefixes from the root cgset's prefix list. This means we only have to
query one task for its cgroup file, instead of potentially each of them.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:57:01 +03:00
Tycho Andersen
16d3fdef31 cgroup: fix --cgroup-root and cgns interaction
Basically, instead of --cgroup-root replacing the actual root, when a cgns
is present, it just replaces the namespace prefix. See patch comments for
details.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:55:00 +03:00
Tycho Andersen
a24e37d63f cgroup: don't do cgroup moves async
We rely on the synchronous-ness of the behavior because we assume that the
task is in all the right cgroups when forking its children. If it's not,
and the child has the same cgroups as its parent but not all the moves are
done, it might end up in /.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:51:33 +03:00
Pavel Emelyanov
5057dc5e97 cg: Add comment why cgroup ns flag is not passed to clone
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:51:07 +03:00
Tycho Andersen
dae14ddfb0 cgroup: don't CLONE_NEWCGROUP on clone
These flags are restored differently, so let's not make extra namespaces
where we don't need them.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:50:10 +03:00
Tycho Andersen
0e7d91e413 cgroup: only collect cgsets once
Instead of doing all the work in collect_cgroup() to figure out whether or
not we've collected this cgroup already, let's only call it if we created a
new cgset in the first place.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:48:31 +03:00
Tycho Andersen
c0be940b98 cgroup: nested cgroups aren't really supported
After some discussion with Serge Hallyn, it seems that the current
implementation of cgroup namespaces doesn't really support nesting. It's
not a quick fix, so let's disable this for now (not that it matters, since
probably nobody is nesting these anyways right now :)

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:47:02 +03:00
Tycho Andersen
f8a06e7a1d cgroup: allow restoring from multi-headed freezer cgroups
b428a3a2fb allows dumping containers with
multi-headed freezer cgroups, but we can't restore these containers without
some help at restore time too.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-03 13:46:11 +03:00
Pavel Emelyanov
34b5e8f86f img: Warn about absolute paths for parent images dir
When working with mntns, the absolute path in parent symlink will
not be open-able on restore. However, completely banning this case
is not good.

Affects #116

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-02 17:05:07 +03:00
Dmitry Safonov
807bedbe88 piegen: add --pcrelocs/-r option
nr_gotpcrel is the last variable which name we can't set with piegen's
option. Let's introduce option for that.
It will help for including two generated blobs simultaneously.

Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-02 17:04:27 +03:00
Andrew Vagin
c844b3f248 files: use pr_perror to print errno
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-02 17:03:49 +03:00
Tycho Andersen
eaeb708f19 travis: don't run cgroup tests
Travis uses cpusets in such a way [1] that we can't actually write to
cpuset.cpu_exclusive ever, so none of these tests will work. They'll still
work in jenkins, though, so disabling them is probably ok.

Closes #118

[1]: https://github.com/travis-ci/worker/blob/master/backend/docker.go#L66

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
CC: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 13:03:31 +03:00
Tycho Andersen
6af5f5755a cgroup: don't use FILE* for cg property restore
Some libcs buffer writes to FILE*, which means that we error on fclose
instead of write, which makes it hard to figure out what property actually
failed writing.

Also shorten the error path a bit. Hopefully this patch will help with
debugging #118

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Andrew Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 13:02:14 +03:00
Andrew Vagin
503350b922 parasite: don't use a negative index to access array elements
*** CID 158458:  Memory - corruptions  (NEGATIVE_RETURNS)
/criu/pie/parasite.c: 321 in get_proc_fd()
315
316             ret = sys_readlinkat(AT_FDCWD, "/proc/self", buf, sizeof(buf));
317             if (ret < 0 && ret != -ENOENT) {
318                     pr_err("Can't readlink /proc/self (%d)\n", ret);
319                     return ret;
320             }
>>>     CID 158458:  Memory - corruptions  (NEGATIVE_RETURNS)
>>>     Using variable "ret" as an index to array "buf".
321             buf[ret] = 0;
322
323             /* Fast path -- if /proc belongs to this pidns */
324             if (pie_atoi(buf) == sys_getpid())
325                     return sys_open("/proc", O_RDONLY, 0);
326

Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 12:52:52 +03:00
Andrew Vagin
b9a6b91493 cgroup: don't use uninitialized variables
*** CID 158459:  Uninitialized variables  (UNINIT)
/criu/proc_parse.c: 2218 in parse_task_cgroup()
2212
2213     int parse_task_cgroup(int pid, struct parasite_dump_cgroup_args *args, struct list_head *retl, unsigned int *n)
2214     {
2215            FILE *f;
2216            int ret;
2217            LIST_HEAD(internal);
>>>     CID 158459:  Uninitialized variables  (UNINIT)
>>>     Declaring variable "n_internal" without initializer.
2218            unsigned int n_internal;
2219            struct cg_ctl *intern, *ext;
2220
2221            f = fopen_proc(pid, "cgroup");
2222            if (!f) {
2223                    pr_perror("couldn't open task cgroup file");

** CID 158458:  Memory - corruptions  (NEGATIVE_RETURNS)
/criu/pie/parasite.c: 321 in get_proc_fd()

Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 12:52:20 +03:00
Tycho Andersen
529420689c restore: load ip6tables modules on restore as well
The restore process uses these modules as well, so let's modprobe them.
This prevents:

(00.217856)      1:     Running ip rule delete
(00.218970)      1:     Running ip rule delete
(00.220059)      1:     Running ip rule delete
(00.221695)      1:     Running ip rule restore
(00.223068)      1:     Running iptables-restore for iptables-restore
(00.439385)      1:     Running ip6tables-restore for ip6tables-restore
modprobe: ERROR: could not insert 'ip6_tables': Operation not permitted
ip6tables-restore v1.6.0: ip6tables-restore: unable to initialize table 'filter'

Error occurred at line: 2
Try `ip6tables-restore -h' or 'ip6tables-restore --help' for more information.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 12:51:55 +03:00
Tycho Andersen
48c7d40fc8 lsm: report more errors when rendering profile fails
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 12:51:48 +03:00
Andrew Vagin
c72f6d5823 cgroup: add \n to an error message
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 12:51:17 +03:00
Cyrill Gorcunov
c1dabe8cfb crit: Add symbolic link for pycriu module
When we run "make install" the python's setup
script prepares all directories for modules
but if we need to run crit from the source
tree without its install then we fall in trouble
because python doesn't know where the fetch
pycriu from.

Thus simply provide the symlink to the modules
emulating that instalation complete.

Note this is for developers conveniency only
because for end users "make install" always
must has place.

Reported-by: Pavel Emelyanov <xemul@virtuozzo.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-03-01 12:50:47 +03:00
Tycho Andersen
c153c23acf cgroup: remove the restriction of subset-of-root-set
At one point in the cgns patchsets I had removed this, but somehow it got
lost in the shuffle. Since we support this now, let's remove this
restriction.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:39:32 +03:00
Tycho Andersen
93707b24cb test: add a test for dumping non-root-subset cg sets
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:39:25 +03:00
Andrey Ryabinin
c30e3ab23a test/vfork00: mark vfork test as expected to fail
We don't have a way to dump proccess blocked in vfork(), hence
mark this test as expected to fail.

Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:38:53 +03:00
Andrey Ryabinin
403a74c7ba test/vfork00: directly _exit() instead of exec() in vforked proccess
execlp() fails when we run vfork00 test inside namespace because we don't have
'/bin/true' there. Instead of execlp() in vfork-child we can just _exit().

Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:38:37 +03:00
Andrey Vagin
0195c99945 gcov: remove double-slash from the sed script (v2)
$ echo test//home/avagin/git/criu
test//home/avagin/git/criu

v2: use double quotes to run pwd
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:37:35 +03:00
Tycho Andersen
b428a3a2fb cgroup: don't fail on multi-headed freezer cgroup
Consider the case where --freeze-cgroup=/lxc/foo, but (e.g. with systemd in
lxc), all of the tasks actually live in a set of sub cgroups, e.g.
/lxc/foo/init.scope and others. In this case, we will have a multi-headed
controller, since there is nothing in the common parent. We should just
save the freezer value in all of these heads instead of failing.

Note that this doesn't address the larger problem that only the top level
freezer.state file is c/r'd, or waht happens when the container itself has
frozen tasks but not at the top level. After some discussion, there is no
nice way to atomically test-and-set the cgroup freezer, so we'll need some
other kernel help. But I'll ignore this for now :)

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:36:48 +03:00
Pavel Emelyanov
f91d3f01a5 zdtm: Move crit test into others
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:36:05 +03:00
Andrew Vagin
17018b3c18 tests/others: a few fixes of paths
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:35:32 +03:00
Andrew Vagin
ee3bea7b88 tests: remove "live" from zdtm paths
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:35:30 +03:00
Andrew Vagin
6b4fb4d4de test: remove test/post-dump.sh
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:35:28 +03:00
Andrew Vagin
f6d9d8d41a tests: move app-emu in test/others/
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:35:26 +03:00
Tycho Andersen
eb49e69d99 dump: preload netfilter modules too
As with the socket diag modules, since we might be using the
ip*filter_tables modules, we should preload those as well, in case the host
system hasn't already loaded them. Really, I should implement netlink
buffer dumping so we can get rid of this hack :)

v2: remember to close /dev/null fd after using it

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:35:00 +03:00
Cyrill Gorcunov
1e8c1069cd zdtm: Use predefined macro from nmk
We better should switch to nmk usage.
But lets c/p for now.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:34:29 +03:00
Dmitry Safonov
9f04c98fe8 i386/syscall_32: add missing sys_openat()
Fixes commit e7d89a60b6 ("add openat() to syscall list").
Nip: move sys_seccomp for numerical order

Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Tycho Andersen <tycho.andersen@canonical.com>
Reviewed-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:34:07 +03:00
Andrew Vagin
1675ac8b8f dump: don't call rollback actions from a signal handler
We can do this, but we need to be sure that all structures
are consistent in any moment and we need to block alarm when
they are inconsistent.

I don't think that we really want to do this now. I suggest to
interrupt a current syscall if an alarm signal is triggered.

v2: print an error message before exiting

Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: Andrew Vagin <avagin@virtuozzo.com>
Reviewed-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-29 11:33:15 +03:00
Cyrill Gorcunov
2fd16c39a6 build: gcov -- Don't gen gcov on blobs and syscalls
They are running inside dumpee space so should not
be injected with Gcov instructions.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-26 15:02:02 +03:00
Cyrill Gorcunov
b7f0af3ac9 criu: cgroup -- Don't use PAGE_SIZE inside parasite args
This cause problem on ppc64

 | gcc -c -O2 -g -Wall -Werror -DCONFIG_PPC64 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
 | -fno-strict-aliasing -iquote /home/cyrill/criu/criu/include -iquote /home/cyrill/criu/images
 | -iquote /home/cyrill/criu/criu/pie -iquote /home/cyrill/criu/criu/arch/ppc64
 | -iquote /home/cyrill/criu/criu/arch/ppc64/include -iquote /home/cyrill/criu/ -I/usr/include/libnl3
 | -iquote ppc64 -DCONFIG_PPC64 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE parasite-syscall.c -o parasite-syscall.o
 | parasite-syscall.c: In function ‘parasite_dump_cgroup’:
 | parasite-syscall.c:1283:2: error: size of unnamed array is negative
 |   ca = parasite_args(ctl, struct parasite_dump_cgroup_args);
 |   ^
 | /home/cyrill/criu/scripts/nmk/scripts/rules.mk:53: recipe for target 'parasite-syscall.o' failed

Just use size parasite known to support.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Acked-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
2016-02-26 15:01:16 +03:00