Commit graph

1009 commits

Author SHA1 Message Date
Pavel Emelyanov
e99576f655 rst: Collect stats about checked-vs-cowed pages
On restore we compare pages' contents with memcmp to check which
of them can remain shared. Report this info in restore stats.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-11 13:36:24 +04:00
Pavel Emelyanov
9bb545011c stats: Introduce counters for restore
These are atomic_add-s on shmalloc-ed stats.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-11 13:24:13 +04:00
Pavel Emelyanov
d77a05b6dc stats: Rename existing timing and cnt counters into dump_... ones
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-11 13:07:21 +04:00
Pavel Emelyanov
6ac4870181 stats: Prepare for collecting restore stats
Restore stats are difficult -- we have to collect them from several
tasks and thus existing plain variables would not work. We'll need
shared memory with stats, so prepre for allocating one.

Other than this -- put call to write_stats() where appropriate for
restore.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-11 13:00:45 +04:00
Pavel Emelyanov
7f9302505c page-server: Convert opts.addr into char *
We'll have --address argument reused for library, so make this
abstract address, not ipv4 one.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-11 12:01:14 +04:00
Pavel Emelyanov
f61eb82f8b files: Convert fdescs hash from list-s into hlist-s
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-10 16:41:18 +04:00
Andrey Vagin
d5540a2de5 page-server: check that all data have been accepted
Currently criu sends data to the page server, but it doesn't get any
feedback, so it can't be sure that all data have been accepted.

This patch adds a flush command, which requires an answer from the page
server. This command is sent before disconnecting.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-09 15:39:37 +04:00
Pavel Emelyanov
9cef1a00ce mount: Factor out detached mountpoint opening
The difficulty is that this code is required in both -- pie
and non-pie contexts.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-29 13:12:00 +04:00
Pavel Emelyanov
72ec39f10c util: Rename pie's util-net.c into util.c
Will put more things there.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-29 12:43:30 +04:00
Pavel Emelyanov
987de2de05 parasite: Rename ack-waiting function to look better
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-17 08:56:17 +04:00
Pavel Emelyanov
f2978d2ac7 parasite: Reshuffle sync and async daemon-node executing routines
The version, that might not wait for ack is always called with
"async" flag set. Cleanup things according to this.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-17 08:54:24 +04:00
Pavel Emelyanov
d20089fb32 dump: Merge thread and task parasite-core info dumping
There are parts dumping which is common to thread and task,
and this stuff is represented by parasite_dump_thread structure.

Merge this into parasite_dump_misc and facror out dumping code.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 19:47:52 +04:00
Andrey Vagin
f3f72cd7f8 parasite: use only one command for executing parasite in a daemon mode
If a kernel supports PTRACE_SETSIGMASK, criu don't need to execute
PARASITE_CMD_INIT and PARASITE_CMD_DAEMONIZE, because the frist command
is used only for blocking signals. If criu crashes between these
commands, a process state will be corrupted, because all signals remain
blocked.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 17:24:18 +04:00
Andrey Vagin
45ed5c0ee5 parasite: execute only one parasite commend for dumping per-thread data
We use two commands to get task registers safely. The first command
blocked signals, then crtools dumped registers and all per-thread data
and the the second command unblocks signals.

Currently signals can be blocked with help SETSIGMASK, so we need only
one command to dump per-thread data.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 17:24:18 +04:00
Andrey Vagin
f68f37a11f parasite: modify process memory only for executing syscalls
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 17:24:17 +04:00
Andrey Vagin
2db92dee22 parasite: block signals for each parasite command
Pending signals should be saved, so signals should be blocked.
Signals are blocked for EACH command, because a chance of destroying a
process state should be a small as possible.

At the end there will only two "trapped" commands -- to dump thread
and to start daemon in parasite, so this doesn't add significant
overheads.

If crtools is killed between two commands, a dumped process will run
continue.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 17:24:17 +04:00
Andrey Vagin
206187dbd4 check: check PTRACE_{GET,SET}SIGMASK
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 17:24:16 +04:00
Andrey Vagin
c2c44d5261 signals: dump alternate stack as misc parameters
The initilization stage is not good for that, because it can fail.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 17:24:16 +04:00
Cyrill Gorcunov
27582e3272 inet: Restore SO_REUSEADDR in case of rollback
tcp_repair_off implicitly modifies SO_REUSEADDR option
inside the kernel (thanks avagin@ for pointing this
feature out) thus if we are to rollback and restore
the former settings of socket -- don't forget to
repair this particular one.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-16 14:48:24 +04:00
Andrey Vagin
6641accb1c parasite: remove the DUMP_TREAD command
Nobody uses it.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-10 18:07:17 +04:00
Andrey Vagin
5336bc13c6 dump: dump tid_addr_clear for thread leaders
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-10 18:05:27 +04:00
Cyrill Gorcunov
20b7dafaac restore: Add restoration of alternative signal stack
To restore SAS we have two ways:
- call for sigaltstack explicitly in restorer.c right before we call for sigreturn
- pass stack value to sigreturn call and allow the kernel to restore stack for us

Since second way is a simplier one -- we stick with it.

[alekskartashov@: use RT_SIGFRAME_UC]
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Alexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-10 17:31:12 +04:00
Cyrill Gorcunov
de75a0a326 dump: Add dumping of alternative signal stack
[alekskartashov@: use encode_pointer]
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Alexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-10 17:31:11 +04:00
Cyrill Gorcunov
e7b656190e headers: Beautify sigframe.h
- include "protobuf/core.pb-c.h" for CoreEntry definition
- gather structure predeclaration on top
- move general comment on top as well
- add extern for construct_sigframe helper

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-09 20:16:24 +04:00
Cyrill Gorcunov
73a8b996c5 restorer: Use rst memory allocator for rlimits restore
Number of rlimits may vary depending on system version
criu is compiled against. So we use rst-allocator to
carry all limits read from file.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-09 00:21:31 +04:00
Pavel Emelyanov
2652962bd4 rst: Unmap restorer dyn-args memory at the end
Reported-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-05 16:22:51 +04:00
Pavel Emelyanov
79dfbe6cc2 tcp: Switch to use rst memory allocator on repair off
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-05 15:04:57 +04:00
Pavel Emelyanov
e458d20c4d siginfos: Switch to use rst memory allocator
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-05 15:02:46 +04:00
Pavel Emelyanov
4171d5bf58 posix-timers: Switch to use rst memory allocator
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-05 15:00:08 +04:00
Pavel Emelyanov
2030f2dfb1 timers: Unmap posix timers info mem after restoring them
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 20:11:22 +04:00
Pavel Emelyanov
f8464fdafe timers: Split posix timers restore into two stages
1st stage is -- creating the timers. It may fail if kernel
allocated IDs in a manner we don't expect or runs out of
memory.

2nd stage is -- arm the timers. It cannot fail, since we've
validated the timespecs in advance and should happen after
we've waited for all the other tasks to complete the restore.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 20:02:15 +04:00
Pavel Tikhomirov
d8be68f3d1 posix-timer: Add restore structures
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:30 +04:00
Pavel Tikhomirov
9a9424ee10 posix-timer: Add dump functionality
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:28 +04:00
Pavel Tikhomirov
335a158ebc posix-timer: Get info in parasite, and structures
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:27 +04:00
Pavel Tikhomirov
d992960fa7 posix-timer: Parse proc /proc/<pid>/timers and save info in list
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:26 +04:00
Pavel Tikhomirov
2752cf9bf7 posix-timer: Add fd, magic and show functionality.
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:24 +04:00
Pavel Tikhomirov
2f98253c26 posix-timer: Add protobuf message and rename to protobuf/timer.proto
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:23 +04:00
Pavel Tikhomirov
652ce02eeb syscalls: Add proper syscalls definition.
Signed-off-by: Pavel Tikhomirov <snorcht@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-07-01 16:19:21 +04:00
Pavel Emelyanov
d020ebb36d files: Compact the code by removing per-file dump helpers
Since *all* of them just call do_dump_gen_file with proper ops,
just call one directly. Compacts the code.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-06-14 00:11:08 +04:00
Cyrill Gorcunov
07283b3781 vdso: Diet include/vdso.h
In commit 2f5df09da5
we included asm/type.h for bool definition. This
is fine in terms of CRIU but makes cpt2 converter
to carry the whole asm/type.h, sometimes causing
error due to confilicting definitions.

So lets be simplier and include <stdbool.h> instead.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-06-13 19:41:09 +04:00
Andrey Vagin
b4cebc4f2d parasite: remove an unused id field from parasite_dump_thread
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-06-08 00:01:48 +04:00
Andrey Vagin
de71bc6917 restore: add action scripts setup-namespaces (v2)
After creating namespaces we may need to apply some configuration.
For example uid and gid maps should be applied in this moment.

This script should be executed from crtools, but namespaces are created
in a root process, so we need to add a new stage for synchronizing.

v2: use a separate stage instead of socketpair.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-31 19:01:31 +04:00
Cyrill Gorcunov
fde0162c4f Beautify parasite-syscall.h
- gather structs at top
- add externs
- align arguments in declarations

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Tested-by: Alexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-31 13:47:30 +04:00
Cyrill Gorcunov
eef9b72c33 parasite-syscall: Move parasite_args macro to header
It will be needed in x86/ code.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Tested-by: Alexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-31 13:47:29 +04:00
Andrey Vagin
d0d4d5e705 dump: a trasport socket should be SOCK_STREAM
because we want to know when one of the sides closed its point.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-30 17:59:17 +04:00
Chanho Park
2f5df09da5 vdso: fix build error
This patch fixes build error due to lack of bool type. It can be fixed adding
include file.

In file included from arch/arm/vdso-pie.c:3:0:
include/vdso.h:41:1: error: unknown type name ‘bool’
include/vdso.h:93:1: error: unknown type name ‘bool’

Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Acked-by: Alexander Kartashov <alekskartashov@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-30 14:25:28 +04:00
Cyrill Gorcunov
961742af2c image-desc: Don't forget to declare external @fdset_template
While being extracting common part of image descriptors to separate file
this declaration escaped me.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-29 13:39:06 +04:00
Cyrill Gorcunov
17b0a47b98 image: Move image descriptors to own files
Move image object descriptors to own image-desc
file(s). This allow to reuse the code in other tools.
I had to move show declarations to cr-show.h as well.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-28 22:12:06 +04:00
Cyrill Gorcunov
225716278a protobuf: Move descriptors definitions to own file
Move protobuf object descriptors to own protobuf-desc
file(s). This allow to reuse the code in other tools.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-28 22:11:59 +04:00
Pavel Emelyanov
6bf22f8c75 crtools: Get rid of on-stack cr_options
We have global instance of them, that's enough.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-05-28 21:11:13 +04:00