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>
(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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
* 'zdtm' of https://github.com/avagin/crtools:
zdtm: set SA_RESTART everywhere
zdtm.sh: clean up
zdtm: print test dir, dump and restore path (if any) in case of error
v7: cosmetic chages due to public pressure
v6: silly "/" miss fixed
v5: it finally workks as expected
v4: fixed wrong error print after successfull run on all zdtm tests
v3: spaces removed
v2: print test output file path (if present)
Print dump and restore file in case of running all tests suit.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Andrey Vagin <avagin@gmail.com>
I've got it if -O2 compilation option used.
| cr-restore.c:1069:5: error: ‘ret’ may be used uninitialized in this function [-Werror=uninitialized]
| sockets.c:1145:7: error: ‘sk’ may be used uninitialized in this function [-Werror=uninitialized]
In first case 'ret' indeed might be uninitialized, and
in second case "goto err" was called too early. Fix them both.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>