- 16 Jul, 2014 2 commits
-
-
Andrew Vagin authored
A mount point, which is mounted by someone else, may be umounted in any moment. For example the test system executes tests concurrently and sometimes one test looks up a mount point, which has been mounted by another test. ==================================== ERROR ==================================== Test: zdtm/live/static/inotify00, Namespace: 1 Dump log : /var/lib/jenkins/jobs/CRIU-dump/workspace/test/dump/inotify00/15535/1/dump.log --------------------------------- grep Error --------------------------------- (00.021951) Error (cgroup.c:409): cg: failed walking /var/lib/jenkins/jobs/CRIU-dump/workspace/test/dump/signalfd00/15538/1/.criu.cgmounts.UGj28v/ for empty cgroups (00.021967) Error (cr-dump.c:1601): Dump core (pid: 15535) failed with -1 (00.025509) Error (cr-dump.c:1914): Dumping FAILED. ------------------------------------- END ------------------------------------- ================================= ERROR OVER ================================= In the previous patch I suggested to open a mount point, but it brought other problems. We may open a directory where a cgroup mount has been umounted and an owner will get EBUSY on attempt to remove this directory. Reported-by: Jenkins Criuovich Acked-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Andrew Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
We have two bugs actually. First, the check for 'item == root_item' in dump_task_cgroup fires twice: first when we rite inventory (item == NULL as argument and root_item == NULL because we haven't yet collected tasks) and the 2nd time when we dump the root task itself. The 2nd issue sits in dump_cgroups() -- if root_cgset == criu_cgset we don't write cgroups information at all (checking that we don't have them with list_is_singular() inside that if). That said, we don't need to read the cgroups tree if we're not going to dump it. This patch fixes both. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Andrew Vagin <avagin@parallels.com> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com>
-
- 15 Jul, 2014 4 commits
-
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com>
-
Cyrill Gorcunov authored
In case if something is broken in the kernel and we get a format corrupted -- simply exit out with error instead of strlen'ing nil string. Also while at it -- add a comment about format. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 14 Jul, 2014 6 commits
-
-
Tycho Andersen authored
Before we would not detect the mount point for co-mounted controllers. Things still worked because we'd just re-mount them ourselves and traverse our own mount point, but this saves an extra mount(). Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
No need to pollute typedef out of structure statement since we don't use it in that form. Simply typedef in place. And align members while we're at it. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Was broken by d57be38c -- this one pretty show does return 1. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
This just makes ctl->cur initialized all in one place, but not scattered all over the code. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
- 11 Jul, 2014 7 commits
-
-
Christopher Covington authored
Errors building natively for x86_64 on Ubuntu 12.04: session02.c:142:13: error: ‘PR_SET_CHILD_SUBREAPER’ undeclared session03.c:175:13: error: ‘PR_SET_CHILD_SUBREAPER’ undeclared vdso01.c:300: undefined reference to `clock_gettime' Error cross compiling for arm using Linaro 14.01 toolchain: gcc: warning: ‘-mcpu=’ is deprecated; use ‘-mtune=’ or ‘-march=’ instead cc1: error: unrecognized command line option ‘-mfpu=neon’ cc1: error: unrecognized command line option ‘-marm’ criu-rtc.c:1:0: error: bad value (cortex-a15) for -mtune= switch cc1: error: unrecognized command line option ‘-mfpu=neon’ cc1: error: unrecognized command line option ‘-marm’ criu-rtc.pb-c.c:1:0: error: bad value (cortex-a15) for -mtune= switch Errors cross compiling for aarch64 using Linaro 14.01 toolchain: maps007.c: In function ‘main’: maps007.c:88:4: error: passing argument 1 of ‘atomic_read’ from incompatible pointer type [-Werror] if (futex_get(&shm->stop) && atomic_get(&shm->delta) == MAX_DELTA) ^ In file included from ../../lib/lock.h:10:0, from maps007.c:13: ../../lib/arch/aarch64/include/asm/atomic.h:14:19: note: expected ‘const atomic_t *’ but argument is of type ‘struct f utex_t *’ static inline int atomic_read(const atomic_t *v) ^ ptrace.c: In function ‘main’: ptrace.c:97:15: error: ‘PTRACE_GETREGS’ undeclared (first use in this function) if (ptrace(PTRACE_GETREGS, stopped, NULL, regs)) { ^ Signed-off-by:
Christopher Covington <cov@codeaurora.org> Reviewed-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Tycho Andersen authored
The path in cc->path here always has a "/" prefix since it comes from /proc/$pid/cgroup. The additional / confuses the string slinging because ftw() normalizes paths to have one "/" when we start traversing a subdirectory. Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
When we dive into showing nested message, the call to it will overwrite the ctl->Arg field with the descriptor of the nested one. As a result, after the call returns we continue showing old message with new descriptor. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
We have to many controllers names in cgroup.c file. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Acked-by:
Tycho Andersen <tycho.andersen@canonical.com>
-
- 10 Jul, 2014 1 commit
-
-
Tycho Andersen authored
During the dump phase, /proc/cgroups is parsed to find co-mounted cgroups. Then, for each task /proc/self/cgroup is parsed for the cgroups that it is a member of, and that cgroup is traversed to find any child cgroups which may also need restoring. Any cgroups not currently mounted will be temporarily mounted and traversed. All of this information is persisted along with the original cg_sets, which indicate which cgroups a task is a member of. On restore, an initial phase creates all the cgroups which were saved. Tasks are then restored into these cgroups via cg_sets as usual. Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 08 Jul, 2014 5 commits
-
-
Cyrill Gorcunov authored
If pfn = 0 it means we hit something very strange condition but better to not yield BUG_ON here, better exit with error for future investigation. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Cyrill: we exclude these tests because of braindamaged scheme btrfs uses for subvolume device numbering which we don't yet support in inrmaps. Test: zdtm/live/static/inotify_irmap, Result: FAIL ==================================== ERROR ==================================== Test: zdtm/live/static/inotify_irmap, Namespace: 1 Dump log : /mnt/btrfs/workspace/test/dump/inotify_irmap/16077/1/dump.log --------------------------------- grep Error --------------------------------- (00.024342) Error (irmap.c:80): irmap: Can't stat /var/spool: No such file or directory (00.024365) Error (irmap.c:80): irmap: Can't stat /lib/udev: No such file or directory (00.024378) Error (irmap.c:80): irmap: Can't stat /no-such-path: No such file or directory (00.024383) Error (fsnotify.c:184): fsnotify: Can't dump that handle (00.024397) Error (cr-dump.c:1563): Dump files (pid: 16090) failed with -1 (00.024779) Error (cr-dump.c:1911): Dumping FAILED. ------------------------------------- END ------------------------------------- ================================= ERROR OVER ================================= Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Make pre-dump twice and then dump and restore. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Reported-by:
Robert Reinecke <reinecke@rbg.informatik.tu-darmstadt.de> Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
As per current top commit (9c0c23c0) the amount of code in CRIU _without_ the contents of the test/ directory is $ git grep -l . | egrep -v ^test | xargs wc -l ... 49999 This is the only chance for such a great one-liner :) The place in the code is not completely random -- it's one of the few occurrences of two consecutive empty lines in a .c file. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com> Tested-by:
Andrew Vagin <avagin@parallels.com> Acked-by:
Cyrill Gorcunov <gorcunov@openvz.org> Acked-by:
Ruslan Kuprieiev <kupruser@gmail.com>
-
- 04 Jul, 2014 15 commits
-
-
Pavel Emelyanov authored
It will be rmdir-ed a bit later. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
CRIU doesn't support relative unix sockets paths, so tune the test to use absolute. (v2: Off-by-one spotted by Filipe) Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Otherwise the connection can be disconnected due to a timeout, because the kernel may drop packets from a receive queue (RcvPruned in /proc/net/netstat). Half of buffers always stay in the socket, another half is circulated. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
When cwd is removed (it can be) we need to collect the respective file_desc before starting opening any files to properly handle ghost refcounts. Otherwise we will miss one refcount from the cwd's on ghost, which in turn will either BUG inside ghost removal, or will fail the cwd due to the respective dir being removed too early. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
The prepare one will become more complicated soon. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
If we have opened and rmdir-ed directory, the dump works OK creating the ghost file and remap, but restore creates _file_ instead of directory. Fix this. Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Tycho Andersen authored
Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-