Commit graph

3287 commits

Author SHA1 Message Date
Cyrill Gorcunov
dfdac2cf3a make: Use generic build engine for libcriu.so
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-29 14:48:13 +04:00
Cyrill Gorcunov
c75c92db1d pie: Move send_fds/recv_fds helpers into separate pie/util-fd.c
We will need to reuse this code in criu library, where libc calls
are present thus we will be compiling it in shared mode.

Because internal syscalls library won't be needed we wrap them
with __sys macro which would hide the details of invocation depending
on CR_NOGLIBC preprocessor variable passed from command line.

Original-patch-by: Ruslan Kuprieiev <kupruser@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-29 14:48:10 +04:00
Cyrill Gorcunov
5033068a90 build: Don't forget to use LDFLAGS when ld invoked
It's not a problem now but in future we might need
some special flags to be passed here.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-29 14:48:08 +04:00
Pavel Emelyanov
1943d08c38 tun: Don't dump tun file if we're not taking netns with us
Tun files are attached to tun links, thus we need the latter to
be dumped together with the former.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 19:41:21 +04:00
Cyrill Gorcunov
369f366a36 tun: Use safe stlcpy instead of strcpy
Reading from NetDeviceEntry directly is not safe
and may cause buffer overflow. Use stlcpy helper.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 19:06:51 +04:00
Cyrill Gorcunov
bc002e8537 Add strlcpy helper
Same as kernel provides, adopted from Linux sources.

strlcpy is similar to strncpy but _always_ adds \0
at the end of string even if destination is shorter.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 19:06:43 +04:00
Cyrill Gorcunov
aaeff46e52 tun: Check for xmalloc error
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:20:44 +04:00
Andrew Vagin
20a835a686 zdtm: return back tun test to auto-list
The kernel was compiled without the tun driver.

This reverts commit 889a21292f.

Signed-off-by: Andrew Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:17:43 +04:00
Andrey Vagin
1806f0f6c5 zdtm: set the dumpable flag after setuid and setgid (v2)
setuid and setgid drops the dumpable flag, so it should be set back.
Otherwise proccesses will not able to read a few files in proc (e.g.
/proc/pid/pagemap).

This patch affects cow01:
11:50:04.429:     4: ERR: cow01.c:99: Unable to read data (errno = 13 (No such file or directory))

v2: typo fix
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:17:18 +04:00
Andrey Vagin
39e6d7f553 restore: decode exit status in sigchld_handler
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:16:55 +04:00
Cyrill Gorcunov
70d86e08a3 docs: Add 'cleanup-y' description to Makefile.build.txt
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:04:38 +04:00
Andrey Vagin
5b3d657707 Revert "zdtm.sh: dump traffic for *tcpbuf* tests"
This reverts commit 21d94e0086.

This patch was created for investigating
https://bugzilla.openvz.org/show_bug.cgi?id=2676

The bug is fixed and this patch does nothing useful, because tcpdump
starts too late.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:02:49 +04:00
Andrey Vagin
4e6cd36885 page-read: print errno in case of failure
(00.023059)   3898: Error (page-read.c:129): Can't read mapping page -1: Bad address

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 17:00:17 +04:00
Ruslan Kuprieiev
f6654dc411 v4 zdtm: test semi-closed unix stream connection for data loss
Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 16:52:45 +04:00
Ruslan Kuprieiev
14fff50719 v2 fix data loss when dumping semi-closed unix stream connection.
This patch fixes running into loop and data loss, when dumping
semi-closed unix stream connection.

patchv2 has error check, that was missed in v1.

Signed-off-by: Ruslan Kuprieiev <kupruser@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-28 16:52:17 +04:00
Pavel Emelyanov
299dba681c show: Remove excessive includes
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 17:50:35 +04:00
Pavel Emelyanov
633e559274 show: Remove dead code
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 04:03:31 +04:00
Pavel Emelyanov
b18fb09eb9 show: Replace one-line show_foo calls with args array
We have generic do_pb_show() call and tons of show_foo
routines, that just call one with proper args. Compact
the code by putting the args into array and calling
the do_pb_show() in one place.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 04:00:32 +04:00
Pavel Emelyanov
8af6a39f82 ns: Mark descs array static
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 15:30:39 +04:00
Pavel Emelyanov
5d66f72c92 zdtm: Check tap's hwaddr doesn't change after c/r
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 01:08:03 +04:00
Pavel Emelyanov
022cfc30ae net: Dump and restore netdev address
Tap-s and Veth-s can change one, need to keep it.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 01:07:33 +04:00
Pavel Emelyanov
22d61b880c files: Don't perform fd rst stages, if they will be no-op
The recv-fd stage is only required if we created any transport fd.
The post-open one is only required if there's at least one fdtype
with post-open callback in ops.

Both things can be evaluated in advance and unneeded stages can
be skipped.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 23:28:44 +04:00
Cyrill Gorcunov
fcb6ee66b5 Cleanup generated file
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-24 10:58:45 +04:00
Pavel Emelyanov
84737e2796 build: Generate most of the pb-desc automatically
These contain linkage between number, data type and routines
for pb messages we write/read to/from image files. Most of them
have simple number-type-routines mapping, so introduce a generating
script for that.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 21:47:31 +04:00
Pavel Emelyanov
889a21292f zdtm: Drop tun test from auto-list
There's some strange setup on Jenkins boxes, so that /dev/net/tun
is inaccessible. Need to check this after holidays :(

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 19:38:12 +04:00
Pavel Emelyanov
c2b7800740 check: Add tun support
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 19:18:47 +04:00
Pavel Emelyanov
ed5f82c7e6 zdtm: Basic checks for tun files/links are c/r-ed properly
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 19:12:00 +04:00
Pavel Emelyanov
1ac6d76cbd tun: Restore tun files and tun links
This thing is pretty straightforward -- on netns creation
populate it with tun-s, after this collect tun files, open
and attach them with regular fd-s engine.

One tricky thing -- when populating namespace with tun links
make them all persistent and drop this flag (if required)
later, when the first alive opened appears.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 19:10:15 +04:00
Pavel Emelyanov
a3e53658f7 tun: Dump tun files and tun links
The major issue with dump is -- some info id get via netlink,
some via sysfs and some (!) via opened and attached tun file.
But the latter cannot be created, if there's another one attached
(or the mq device is full with threads).

Thus we have to dump this info via existing tun file and keep one
in memory till the link dump code takes place.

Opposite situation is also possible -- we can have a persistent
unattached device. In this case we have to attach to it, dump
things and detach back.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 19:02:55 +04:00
Pavel Emelyanov
9615c3b96b tun: Initial skeleton for tun support
There will be two entities handled:

1. tun file -- an opened char device with misc major and tun minor
   that can be attached to item #2

2. tun netdevice -- another type of links

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 18:57:40 +04:00
Pavel Emelyanov
92cc20c07c net: Ability to restore existing link's params with rtm
TUN devices are created with ioctl, but their parameters (e.g.
flags with state, mtu, etc.) are to be restored with generic
RTM_SETLINK message.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 18:46:48 +04:00
Pavel Emelyanov
821621cdb7 files: Don't restore pos when file doesn't support one
It's not quite clean, but on dump non-seekable files dump 0xff...ff into
64-bit pos field of the image. Thus on restore we'd face an error in the
do_open_reg. In order not to have separate helper for non-seekable files
just skip the position restore for such.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 16:18:18 +04:00
Pavel Emelyanov
4869da1781 net: Read ns' sysfs file helper
Just a small helper, that reads string from ns' sysfs mount.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 16:14:37 +04:00
Pavel Emelyanov
8d2e0d5d14 net: Mount ns' sysfs before dump
Some information about network devices may hide in sysfs, thus
it's required to have one at hands while dumping the netns.

Create the detached mount for that.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 16:13:31 +04:00
Pavel Emelyanov
c7afbae598 net: Prepare to dump netdev entry with extentions
Some (most) network devices would like to have NetDeviceEntry with
more fields, than currently present (and enough for lo and veth).
Prepare for that by allowing them to define their own callback that
would fill the resor of the pb entry and call write_netdev_img().

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-23 16:08:46 +04:00
Yicheng Qin
7daefd9751 test/zdtm: add option -r to run test with specified name
The option can run test with specified name directly without check
or match.

It can be used to run experimental test that is not in TEST_LIST.

Signed-off-by: Yicheng Qin <yichengq@google.com>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-21 17:33:10 +04:00
Pavel Emelyanov
60e6d38868 collect: Shorten common images collecting code
Now we have a set of cinfo-s, it's possible to collect all
this stuff in a plan for-loop.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-21 03:52:18 +04:00
Pavel Emelyanov
64e7d2435a collect: Reduce amount of args to collect_image call
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-21 03:27:06 +04:00
Pavel Emelyanov
9917c4fe34 rst: Compact file-descs collects a bit
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-21 01:06:58 +04:00
Pavel Emelyanov
e03ab6b409 rst: Rework remaps collection on generic collect routine
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-21 00:55:26 +04:00
Pavel Emelyanov
0543f49c3e pb: Free image object of collection doesn't need it
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-21 00:55:24 +04:00
Andrey Vagin
ef3ca3a104 restore: do not kill processes if not-all of them have been created
If processes are restored without pidns, criu knows pidtheir -s from images,
but part of those task may have not yet forked, and thus the pids can not
exist or (!) be used by other processes.

To address that we abort stages RESTORE_NS and FORKING without killing tasks,
but with task_entries->start futex by writing STATE_FAIL into it and making
the tasks to check that. Since during RESTORE_NS and FORKING stages tasks can
only block on the mentioned futes, we can safely do it.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-20 15:17:30 +04:00
Andrey Vagin
0c5b606b48 zdtm: add a new test, where both sides of a tcp connection is dumped
Reported-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-20 14:58:14 +04:00
Andrey Vagin
4329287717 zdtm: clean up test_fork
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-20 14:57:13 +04:00
Yicheng Qin
156b1b8195 test: create env.sh for environment setting
Currently, env.sh only contains the location of criu executable.

Signed-off-by: Yicheng Qin <yichengq@google.com>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-20 14:52:34 +04:00
Yicheng Qin
f1684be8a4 test/tcp/run.sh: fix permission
Signed-off-by: Yicheng Qin <yichengq@google.com>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-20 14:51:52 +04:00
Cyrill Gorcunov
71f7f7546c atomic: Use atomic_read instead of atomic_get
To switch to kernel's style.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-16 19:37:06 +04:00
Cyrill Gorcunov
56cb0f8baf arm: atomic -- Add atomic_read/atomic_set helpers
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-16 19:37:05 +04:00
Cyrill Gorcunov
aea8a605f3 atomic -- Switch to linux kernel templates
Use same code as provided in kernel. In first place
we used own prototypes in case of simplicity (they
all were based on "lock xadd" instruction. There is
no more need for that and we can switch to well known
kernel's api.

Because kernel uses plain int type to carry atomic
counters I had to add explicit u32 type for futexes,
as well as a couple of fixes for new api usage.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-16 19:37:03 +04:00
Cyrill Gorcunov
19391c85b3 arm: atomic -- Use signed types for atomic_add_return/atomic_sub_return
Just like kernel does.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2013-08-16 19:37:02 +04:00