After all the child/threads stuff is moved to helpers it is
possible to remove some unneeded code paths and local variables.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Move all the parsing of /proc/pid/children into a helper to be symmetrical
with the threads parsing.
Error from xrealloc is ignored as well.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Move the whole code dealing with parsing threads at collect_pstree
stage into one function.
The nr_threads calculation is performed inside it based on the amount
of directories in /proc/pid/task, not the Threads: count in status.
Error from xrealloc is ignored by now.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
If a task is sleep in syscall, it should be restared.
This logic is moved from kernel do_signal().
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
This test suite contains many small test cases for different subsystems.
Example of execution:
# make busyloop00.pid
# ../../../../crtools -d -t `cat busyloop00.pid`
# kill -9 `cat busyloop00.pid`
# ../../../../crtools -r -t `cat busyloop00.pid`
# cat busyloop00.out
PASS
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
sigactions are restored before memory and if a parent get a signal
which has a handler, it will get segmentation fault.
This problem will disappear, when we add a freezer, because
all processes will be resumed after restoring.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
A file destriptor is opened for read-only and mmap with PROT_WRITE fails.
We don't need PROT_WRITE for this case, because a file contains up to date
data.
lr-x------ 1 root root 64 Dec 1 19:10 20 -> /usr/lib64/gconv/gconv-modules.cache
pos: 0
flags: 0100000
41155 mmap(0x7f2c3d6cf000, 28672, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, 20, 0 <unfinished ...>
41155 <... mmap resumed> ) = -1 EACCES (Permission denied)
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
v2:
- Pavel reported there is no need to lock/unlock
last-pid file in cycle, just lock it once before
threads creation and unlock at the end.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
This also depends on kernel's inteface being changed,
so kernel/ is updated as well.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
The patch "sysctl: Add the kernel.ns_last_pid control" is not
yet handled by crtools, still it's staged here to not loose
it and collect all Acks in place.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
If I understand correct, they don't differ in linux.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
pipe_loop00 passed with this patch.
When we restore a regular fd (not pipe) we do use flags
directly in open() call.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
It's work for /dev/zero, /dev/null and other simple devices.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
It's because this mask will be restored as rt_sigframe->uc.uc_sigmask.
uc_sigmask will be set as current->blocked in sigreturn, so we should
dump SigBlk in this case.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
A parasite code dumps all sigactions in sigact.pid.
v2: remove hard code for sizeof(sigset_t)
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
ZDTM tests redirect standart descriptors to /dev/null
v2: * Skip tty only if it's a standard descriptor.
* No strcmps on names.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
It has been used at very early stage when
no mincore call was implemented. Not needed
anymore -- so drop it out.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Reduce the pages-xxx.img file size significantly (from 2.1M to ~100K for simple counter test)
by not dumping private file pages, that have not yet changed from its file prototype.
If you'll have problems with it, just let me know and comment the definition of PAGE_ANON not
to block your work.
This uses the implemented earlier flag from mincore.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This one isn't used on restore process, since the file mapped is
stored in the fdinfo part of the images.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This entry is for restorer only. In image the fd is -1 always.
Signed-off-by; Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
It's pointless. All vmas are stored in the per-pid image file.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Otherwise the dumpee migh be unable to locate it.
Reported-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>