Commit graph

760 commits

Author SHA1 Message Date
Pavel Emelyanov
fe598403df sockets: Delay dgram connection
By the time we try to resolve datagram socket connection name the other
end may not yet be on the hash. Move the address resolution into the
conn job.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-07 17:26:52 +04:00
Pavel Emelyanov
aeabf03133 sockets: Datagram connection fix
The address length should be the real length, not the buffer size.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-07 17:26:43 +04:00
Pavel Emelyanov
75cb79973e files.c: Use RW API
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-07 17:18:25 +04:00
Andrey Vagin
4d746277ad zdtm: correct e-mail 2012-02-07 15:10:50 +04:00
Kir Kolyshkin
f9408a054e test/zdtm.sh: kill the test case process if crtools failed
Do not leave it running

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 15:10:50 +04:00
Kir Kolyshkin
6f5cf13f29 test/zdtm.sh: sanity check for crtools existence
Otherwise test goes too far.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 15:10:50 +04:00
Andrey Vagin
be020f7a6c zdtm.sh: fix error handling 2012-02-07 15:10:50 +04:00
Andrey Vagin
17018e7bb6 socket_listen: add workaround for EADDRINUSE
crtools doesn't restore sockopts, so if a test is executed in
a second time bind() may return EADDRINUSE

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-07 14:09:50 +04:00
Kinsbursky Stanislav
3ca881511b zdtm: shm test update
v2: cleanup issues fixed

What's new:
1) cloning to new IPC ns depends on built option.
2) Check for lookup shared segment by key added.
3) Check for creation new segnent after migration added.
4) Few check for syscalls results added.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 11:22:16 +04:00
Andrey Vagin
2305923ee8 zdtm.sh: add "futex" test
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 11:00:48 +04:00
Kir Kolyshkin
f2734ce825 test/zdtm.sh: formatting fix
Put echo to a separate line to
- keep the text within 80 columns
- visually check that the positions of semicolons are the same

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 11:00:14 +04:00
Kir Kolyshkin
060fb6fed2 test/zdtm.sh: trivial nitpicks
Remove excessive quotes and uneeded semicolons after breaks

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 11:00:08 +04:00
Kir Kolyshkin
6cc9482a1a test/zdtm.sh: simplify showing list of tests
echo normalizes spaces, tr converts them into newlines

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 11:00:01 +04:00
Kir Kolyshkin
60a35bfaa9 test/zdtm.sh: fix check for test name
(1) We should use -w so we can't match a substring
(2) No need to use quotes

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 10:59:56 +04:00
Kir Kolyshkin
0bf98db4d9 test/zdtm.sh: cleanup run_test() calls
If we use shift and $* in run_test(), there is no need to quote arguments.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 10:59:51 +04:00
Kir Kolyshkin
56efc51a5b test/zdtm.sh cleanup: mark local variables as such
Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 10:59:38 +04:00
Kir Kolyshkin
dae80231b0 test/zdtm.sh cleanup: remove 30 mentions of $ZP
Replace them by just two.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
2012-02-07 10:59:11 +04:00
Stanislav Kinsbursky
5059cc7b0a show: ipc cleanup
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 21:27:15 +04:00
Stanislav Kinsbursky
6079c50925 checkpoint: switch namespaces before collect stage
Cleanup patch.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 21:27:07 +04:00
Stanislav Kinsbursky
f054b3821d checkpoint: replace write_img_buf --> write_img ipc code
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 21:26:59 +04:00
Stanislav Kinsbursky
8971be17fd checkpoint: namepsaces info to dump log
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 21:26:50 +04:00
Andrey Vagin
4d962b27c0 crtools: dump and restore clear_tid_address
pthread_join works with this patch

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 17:28:04 +04:00
Andrey Vagin
e8c6c877ed syscall: add set_tid_address
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 17:27:31 +04:00
Pavel Emelyanov
06cc19511a ptrace: Send signals with final state explicitly
According to Oleg the PTRACE_KILL doesn't and was-not-supposed-to work.
Thus, kill tasks to final state explicitly and just detach from them.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-03 14:54:26 +04:00
Cyrill Gorcunov
cff9654d62 uts: Don't fail on "show" if there is no data dumped
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 21:22:21 +04:00
Cyrill Gorcunov
995b0bf5e7 ipc: Don't fail on "show" if there is no data dumped
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 21:22:20 +04:00
Cyrill Gorcunov
405985e964 Add sysctl handling engine
Since we need to operate with sysctls pretty heavy,
better to add some common engine for all handlers.

Based-on-patch-from: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
2012-02-02 21:22:20 +04:00
Andrey Vagin
73b93182af zdtm.sh: fail if a pid file doesn't exist
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 20:46:12 +04:00
Andrey Vagin
6ee58e4b0e make: remove test/dump directory during clean up
This directory contains image files, which remains after tests

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 20:46:03 +04:00
Andrey Vagin
e5929ab971 restore: sync threads
Use the save mechanosm as for processes.

* Threads should starts together with processes
* If a thread segfaulted, we should be able to detect it.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 20:45:54 +04:00
Andrey Vagin
27b20dfcc6 restore: clean up code, which synchronizes resume of tasks (v2)
I added two mechanism of synchronization. The second one is better.
This patch deletes the first one.

Before we had an entry (pid and lock) for each tasks and all this
entries were shared between all processes. Now we don't need "lock"
and we use pids from crtools to kill all processes if someone failed.

v2: s/malloc/xmalloc

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 20:45:43 +04:00
Pavel Emelyanov
a038cbd9b8 files: Fix memory overflow checks for shared files.
Otherwise we skip shared segment
overflow on big scales and tests sporadically fail.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 01:34:40 +04:00
Pavel Emelyanov
153c033d7e zdtm: Add sleep() to zombie00
When creating zombies we must wait for them to appear to test that we do
support zombies, but not some transient state. But the thing is that we
cannot use wait() or any other synchronous call here, thus we have to
suck and use sleep(1) :(

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-02 01:34:31 +04:00
Pavel Emelyanov
766a42e316 ptrace: Kill task with -9 explicitly when detaching
Strange fact, but a task seems to live for some time after PTRACE_KILL :(
Don't know yet why this happens, I'm poking Oleg on that, but this one makes
it die right at once.

The streaming file read test passes after this.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 22:17:56 +04:00
Cyrill Gorcunov
e61605169f ctrools: Rewrite task/threads stopping engine is back
This commit brings the former "Rewrite task/threads stopping engine"
commit back. Handling it separately is too complex so better try
to handle it in-place.

Note some tests might fault, it's expected.
---

Stopping tasks with STOP and proceeding with SEIZE is actually excessive --
the SEIZE if enough. Moreover, just killing a task with STOP is also racy,
since task should be given some time to come to sleep before its proc
can be parsed.

Rewrite all this code to SEIZE task and all its threads from the very beginning.

With this we can distinguish stopped task state and migrate it properly (not
supported now, need to implement).

This thing however has one BIG problem -- after we SEIZE-d a task we should
seize
it's threads, but we should do it in a loop -- reading /proc/pid/task and
seizing
them again and again, until the contents of this dir stops changing (not done
now).

Besides, after we seized a task and all its threads we cannot scan it's children
list once -- task can get reparented to init and any task's child can call clone
with CLONE_PARENT flag thus repopulating the children list of the already seized
task (not done also)

This patch is ugly, yes, but splitting it doesn't help to review it much, sorry
:(

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 19:49:28 +04:00
Cyrill Gorcunov
ab82c2de98 Revert "ipc: Drop u32[2] from image, simply use u64 all the time"
This reverts commit 4f83d028ff.

It breaks IPC test-case, need to investigate.
2012-02-01 19:27:39 +04:00
Cyrill Gorcunov
63b88720a3 Revert "ctrools: Rewrite task/threads stopping engine"
This reverts commit 6da51eee3f.

It breaks transition/file_read test case
2012-02-01 19:27:28 +04:00
Cyrill Gorcunov
57454c524b Revert "make: Switch to -02 by default"
This reverts commit 501d85193c.

Need to investigate code generated for parasite since dumper fails.
2012-02-01 19:27:17 +04:00
Andrey Vagin
aa19c22e85 make: Link parasite.o and util-net.o
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 19:27:07 +04:00
Andrey Vagin
d4c67416e9 parasite: transfer image fd in parasite
Don't open image files from parasite.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 19:26:58 +04:00
Andrey Vagin
13faf4ee7f parasite: create unix socket in parasite for transfering fd (v3)
Before we used absolute pathes to images and wrote logging messages in
stderr of a target process.

Now we are able to create fd and send it to parasite.

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 19:26:50 +04:00
Andrey Vagin
1465fade3b util: move recv_fd and send_fd in a separate file
It will be used in the parasite

Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 19:26:41 +04:00
Andrey Vagin
fd7c44dd86 util: add socket syscalls
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 19:26:33 +04:00
Cyrill Gorcunov
339ad2d887 files: Get rid of strict-aliasing violations
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 17:35:05 +04:00
Pavel Emelyanov
7050ea2ca8 zdtm: Static pstree test
I'm waiting for Andrey's

* pthread join fix
* infrastructure for fokring in zdtm

to extend it with threads.

Besides, we/me need to fix the seizing of dynamically forking tasks
to write a transition pstree test.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 17:29:23 +04:00
Pavel Emelyanov
6da51eee3f ctrools: Rewrite task/threads stopping engine
Stopping tasks with STOP and proceeding with SEIZE is actually excessive --
the SEIZE if enough. Moreover, just killing a task with STOP is also racy,
since task should be given some time to come to sleep before its proc
can be parsed.

Rewrite all this code to SEIZE task and all its threads from the very beginning.

With this we can distinguish stopped task state and migrate it properly (not
supported now, need to implement).

This thing however has one BIG problem -- after we SEIZE-d a task we should seize
it's threads, but we should do it in a loop -- reading /proc/pid/task and seizing
them again and again, until the contents of this dir stops changing (not done now).

Besides, after we seized a task and all its threads we cannot scan it's children
list once -- task can get reparented to init and any task's child can call clone
with CLONE_PARENT flag thus repopulating the children list of the already seized
task (not done also)

This patch is ugly, yes, but splitting it doesn't help to review it much, sorry :(

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
2012-02-01 17:29:13 +04:00
Cyrill Gorcunov
501d85193c make: Switch to -02 by default
And turn on -O0 -ggdb3 only if DEBUG=1.
Optimization was turned off at early
prototype stage so no need to carry it
now.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
2012-02-01 17:23:44 +04:00
Cyrill Gorcunov
6f589a4f6e sockets: Fix a few problems if compiled with DEBUG=1
sockets.c: In function ‘show_one_inet_img’:
sockets.c:151:2: error: format ‘%d’ expects argument of type ‘int’, but argument 9 has type ‘char *’ [-Werror=format]
sockets.c: In function ‘open_unix_sk_stream’:
sockets.c:925:10: error: unknown escape sequence: '\C' [-Werror]

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
2012-02-01 17:23:44 +04:00
Cyrill Gorcunov
4f83d028ff ipc: Drop u32[2] from image, simply use u64 all the time
This eliminate

 | ipc_ns.c:287:2: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]

and makes code simplier.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
2012-02-01 17:23:44 +04:00
Cyrill Gorcunov
7197b9467d namespaces: Eliminate uninitialized 'ret' usage
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
2012-02-01 17:23:44 +04:00