Commit graph

2013 commits

Author SHA1 Message Date
Cyrill Gorcunov
17a1548a5b pstree: Rename @list member to @sibling
To be close to the kernel naming.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-08 18:59:26 +04:00
Cyrill Gorcunov
9c60b1f4ad pstree: pstree_item members tuning up
- @list member closer to @children
 - add some comments on memebers
 - add space lines for members grouping

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-08 18:59:12 +04:00
Pavel Emelyanov
df83b2c2fb parasite: Use simple logging engine
Just as for restorer, but simper, as the parasite logging
is just sys_write_msg :)

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-07 21:12:40 +04:00
Pavel Emelyanov
ddf68b7940 restorer: Use the simple logging engine
Remove the restorer-log and link log-simple into restorer
blob. Now we can use the normal pr_foo API.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-07 21:11:49 +04:00
Pavel Emelyanov
b85bf75cf0 log: Introduce a simple printf-like logging engine
It's supposed to be used by parasite and restorer blob. It
has API equal to the core one -- with setfd, set_loglevel and
(the main thing) print_on_level fn. It currently supports only
strings, decimal and hex numbers (int and long).

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-07 21:06:46 +04:00
Pavel Emelyanov
37a7b35e88 log: Move default loglevel macro to header
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-07 21:03:53 +04:00
Pavel Emelyanov
9a54d64539 log: Merge two loglevel checks
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 20:55:23 +04:00
Cyrill Gorcunov
2b56175e49 log: Don't print time-stamp on LOG_MSG
Otherwise "show" action become unreadable.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 19:22:23 +04:00
Cyrill Gorcunov
16ca152d23 pstree: Add few comments in prepare_pstree_ids
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 17:29:26 +04:00
Cyrill Gorcunov
f318f40415 pstree: Drop redundant nil test in prepare_pstree
This as well releases pb entry on error path, not
a big deal since we're exiting in case of error
but still.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 17:29:04 +04:00
Cyrill Gorcunov
d82b853dc8 pstree: Init pstree_item::list inside __alloc_pstree_item
This is a bit fishy that we do init @children list here
but not @list itself. Better be solid and init everything
in one place.

Also no need to poke @threads and @nr_threads, we're using
xzalloc here anyway.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrey Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 17:25:09 +04:00
Cyrill Gorcunov
9c263a6c8c pstree: Simplify pstree_item_next
It's a deep first search used here so the code can be shrinked.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 17:23:41 +04:00
Cyrill Gorcunov
59e80d4f48 pstree: Fix typo in prepare_pstree_ids message
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 17:21:54 +04:00
Stanislav Kinsbursky
3583578d7c protobuf: fixed typo in pb_write_one
Signed-off-by: Stanislav Kinsbursky <skinsbursky@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 16:04:48 +04:00
Pavel Emelyanov
87cf4ad128 log: Add relative timestamp before each log line
I find this handy.

Looks-good-to: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrew Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 02:18:01 +04:00
Andrey Vagin
30f0acb43e parasite: fix size of cmd
cmd is declarated in parasite-head-x86-64.S
__export_parasite_cmd:
        .long 0

Its size is 4 bytes, so it should be int instead of long.

This patch fixes a bug in parasite execute,
where a part of args are overwritten by cmd.

memcpy(ctl->addr_cmd, &cmd, sizeof(cmd));

Reported-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-03 00:44:35 +04:00
Cyrill Gorcunov
79d00c29c0 zdtm: Don't forget to create /dev/ptmx in new root
Otherwise pty tests might fault.

Reported-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-02 23:08:02 +04:00
Pavel Emelyanov
c6e0a402bc dump: Fix up error path of pages dump
Call the fini stage even if the dump failed.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-29 08:28:53 +04:00
Pavel Emelyanov
fab5f12fcc dump: Open pagemap only once
When dumping pages we use 3 commands for parasite -- prep,
dump (per-vma) and fini. Open the pagemap file in prep,
insteam of in each per-vma dump.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-29 08:23:55 +04:00
Cyrill Gorcunov
6a5ac97186 tty: Fix copying of termios character map
The system termios structure and our PB
equivalent defined quite different, while
first defined as plain array we use dynamically
allocated memory. Thus the use of min() macro
is incorrect here and always produce the size of
pointer.

Fix it using the size of array from the system
provided structure. The BUILD_BUG_ON will prevent
from accidental changes.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-02 20:26:11 +04:00
Cyrill Gorcunov
8a4ec72b2f zdtm: Move pty tests back to ns compatible list
Test pty03 is not yet ready for ns, will be addressed later.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-02 19:22:03 +04:00
Cyrill Gorcunov
4b99537cd4 zdtm: Mount devpts in new root
In case if we enter the new rootfs don't forget to
mount devpts, otherwise ttys can't be connected.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-02 19:21:30 +04:00
Andrey Vagin
0ee1eed5fd zdtm: simplify a case, when a root should be changed
We don't need to umount each points one by one,
if we are goning to do pivot_root().

"""
pivot_root moves the root file system of the current process to the
directory put_old and makes new_root the new root file system.
"""

So I suggest to do pivot_root() and then detach the old root, all
other mount points will be unmounted automatically.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-02 19:20:32 +04:00
Victor Konyashkin
c52be774f0 zdtm: It's need add format to fprintf
It's need add format to fprintf to avoid following error in Ubuntu 12.04:
msg.c:59:2: error: format not a string literal and no format arguments [-Werror=format-security]

Signed-off-by: Victor Konyashkin  <vkonyashkin@parallels.com>
Acked-by: Andrey Vagin <avagin@openvz.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-10-02 19:19:35 +04:00
Andrey Vagin
d33d2290bd files: rework a function for closing all descriptors (v2)
It reads /proc/PID/fd and close all descriptors except service fds.

v2: s/is_one_of_service_fds/is_any_service_fd

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-29 11:01:53 +04:00
Andrey Vagin
edf8ec3fe3 zdtm: add ability to make several iterations of dump/restore
Use the -i <num> option to zdtm.sh

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 19:50:40 +04:00
Andrey Vagin
595e2c7694 files-reg: don't forgot about mntns_root in linked-remap
All operations with files should be relative to mntns_root

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 19:15:52 +04:00
Andrey Vagin
e149e12586 sk-queue: use write/read instread of sendfile
sendfile uses sendpage() and all data are splitted on pages and
a new skb is allocated for each page. It creates a big overhead on SNDBUF.

sendfile() isn't suatable for DGRAM sockets, because message boundaries
should be saved.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 16:44:05 +04:00
Andrey Vagin
1ce1cca2ac sk-queue: don't block on restore of socket queues
If a socket queue doesn't have a free space, a error should be returned,
because nobody reads this socket.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 16:42:15 +04:00
Andrey Vagin
ea20f5d221 mntns: fix indentions
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:13:20 +04:00
Andrey Vagin
a2fd8cd0a5 mntns: simplify a case, when a root should be changed
We don't need to clean_mnt_ns(), if we are goning to do pivot_root().

"""
pivot_root moves the root file system of the current process to the
directory put_old and makes new_root the new root file system.
"""

So I suggest to do pivot_root() and then detach the old root, all
other mount points will be unmounted automatically.

This patch fixes a problem, when a new root is mounted above a non-root
mount point. It's a default configuration for OpenVZ.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:13:18 +04:00
Andrey Vagin
e3fbb63080 crtools: use a special function for executing external utils
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:09:58 +04:00
Andrey Vagin
cd2be93ba4 util: add a function for executing an extrenal tools (v2)
For executing an external tools we need to block a SIGCHLD
and to juggle file descriptors.

SIGCHLD is blocked for getting an exit code.

A problem with file descriptors can be if we want to set 2 to STDIN,
1 to STDERR, 0 to STDOUT for example.

v2: use helpers reopen_fd_as and move_img_fd

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:09:57 +04:00
Andrey Vagin
af02c2698f sk-queue: don't overwrite a return code
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:02:50 +04:00
Andrey Vagin
9f2e9014f8 sk-queue: recvmsg saves a error code in errno
Probably sys_recvmsg was used earlier, which returns a error code.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:02:04 +04:00
Cyrill Gorcunov
eb3f46f33d pstree: Exit with error instead of BUG if image corrupted
No need to panic if image corrupted and we can exit
out graciously.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-28 14:01:17 +04:00
Pavel Emelyanov
4797f7236e help: Add newline at the end of action scripts help messages
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 20:11:54 +04:00
Pavel Emelyanov
1be08acc7c remap: Add cmdline option to allow linked remap
By default crtools shouldn't modify the environment, except for
killing the dumped tasks. The link remap does so and should sit
under explicit cmdline option.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 06:39:23 +04:00
Pavel Emelyanov
fe187fe0ed zdtm: Test that opened and unlinked files with non zero link count work
Same as unlink_fstat0x, but leave one link alive.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 06:25:15 +04:00
Pavel Emelyanov
563b116096 files: Support opened-and-unlinked files with non zero link count
These are not ghost, as they are still on fs, so we cannot take
them with us in the image. Neither we can easily find the other name
of that file. Sad :(

To make it work we linkat() the new name to that file using the
AT_EMPTY_PATH flag to link directly to the opened fd. If we could
openat() the fd's parent we would better do it, but we can't and
thus have to create the link name by explicit absolute path :(

This modifies the fs we're dumping, so I'll introduce one more cmd
line option for that soon.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 06:22:52 +04:00
Pavel Emelyanov
aab7e72ff1 rst file: Introduce the file_remap abstraction
For linked remaps we'll use similar technique as for ghost
files, but lighter. For that sake make reg_file_info remap
to file_remap, not to the whole host_file.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 06:20:06 +04:00
Pavel Emelyanov
7cdfc8b3c5 ghostf: Move remap_id ghost bit clear to open_remap_ghost
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 06:16:51 +04:00
Pavel Emelyanov
246d8336c6 files: Add path len arg to check_path_remap
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-26 06:15:43 +04:00
Andrey Vagin
e1b02a48c1 cr-restore: block SIGCHLD for restoring namespaces
Restore of namespaces requires executions of external tools
(ip, tar, etc). We want to know return codes, so we should
block a default sigchld handler. Before we did that for each
command, I suggest to block SIGCHLD, then restore namespace and
unblock SIGCHLD.

The default sigchld handler is used for catching target processes,
but all this processes (except a current one ) are started after
restoring namespaces.

Currently we forgot to block SIGCHLD before executing "ip",
and this bug was caught.

Reported-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-25 15:59:13 +04:00
Andrey Vagin
c4148d7907 cr-restore: exit if someone can not be restored
Forgot to handle an error path in a one place.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-25 15:54:51 +04:00
Cyrill Gorcunov
f95ff79c6d restorer: Add "memory" constraint into asm statement
It seems otherwise older gcc compilers do treat this
statement as incomplete.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Reported-by: Huang Qiang <h.huangqiang@huawei.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-25 15:33:12 +04:00
Pavel Emelyanov
d81c9a4618 criu: Version 0.2 release
The biggest acheivement since v0.1 -- initial support for LXC containers!

Other less notable (but still great) things done are:

* Implemented support for TTY-s
* Added support for packet sockets
* Bug-fix here and there

Note, that images generated by v0.1 tool are accepted by v0.2 one.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-20 13:44:18 +04:00
Cyrill Gorcunov
1de8adbf71 tty: Verify active pairs once dump complete
We don't support yet detached terminals migration,
so fail early if we can't proceed.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-20 13:35:39 +04:00
Cyrill Gorcunov
a3c886de62 tty: Mark living peers in tty_active_pairs bitmap
Will need it to verify that live tty pairs exist.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-20 13:35:38 +04:00
Cyrill Gorcunov
dd783030e6 tty: Rename tty_test_and_set_index to tty_test_and_set
To trace paired ttys we will need one more bitmap
so rename tty_test_and_set_index to tty_test_and_set
because we will need this helper in another context.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-09-20 13:35:37 +04:00