* pre:
zdtm: Tests for xids and caps
Conflicts:
test/zdtm.sh
The sockets00 test was added earlier.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Rather simple and straightforward and atomic tests should be.
The only problem is that after changing any from the subj the
subsequent opens for .out/.pid files fail so test actually
forks in the beginning. That said -- we need some API in the
lib/ for such forkers.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Dumping is simple. All but secbits can be read from proc, secbits
are got from parasite.
Restoring is a bit tricky -- when you change anything on kernel
cred's struct it performs sophisticated checks and can change
some more stuff than requested, so the creds restoration procedure
is carefully commented step-by-step.
Another thing to mention is that creds are restored after everything
else, i.e. right before performing final threads sync and sigreturns.
This is done to avoid potential problems with insufficient caps for
restoring other stuff (e.g. CAP_DAC_OVERRIDE or zero euid is most
likely required for opening any image file and the notorious control
/proc/sys/kernel/ns_last_pid, which in turn is performed till the
very last moment).
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
These are setXXXid, capset and various bits for prctl and caps machinery.
The thing is that the caps API is not yet fully in glibc so we have to
declare some bits even for core code, not just for restorer/parasite.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
All the IDs and caps are in there. Just read them for future use.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Add command and basis for dumping minor bits for task
from parasite code. It's supposed to retrieve minor bits
form tasks which cannot be read from /proc.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Just disable it for a while, otherwise we get
in test/zdtm/live/streaming/netlink00.c
cc1: warnings being treated as errors
netlink00.c: In function ‘form_request_del’:
netlink00.c:311: error: dereferencing pointer ‘rtap’ does break strict-aliasing rules
netlink00.c:312: error: dereferencing pointer ‘rtap’ does break strict-aliasing rules
netlink00.c:310: note: initialized from here
netlink00.c: In function ‘form_request_add’:
netlink00.c:271: error: dereferencing pointer ‘rtap’ does break strict-aliasing rules
netlink00.c:272: error: dereferencing pointer ‘rtap’ does break strict-aliasing rules
netlink00.c:270: note: initialized from here
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
It's done in two steps
- On checkpoint we find which icons are present
over all sockets and setup peer number to
appropriate listening socket
- On restore we collect listening sockets and once
we find in-flight connection we search for appropriate
listening socket name and use it to call connect() then
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Otherwise debug printing has no inode number in report.
Not really it's that important but very convenient
if you need detailed output.
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
* 'zdtm' of https://github.com/avagin/crtools:
zdtm: remove warnings
zdtm: move tast_daemon after preparation actions
zdtm: fix warnings in mmx00.c
zdtm: say no to EINTR
zdtm: fix warning in Makefile
zdtm: fix warning in transition/ptrace.c
zdtm: initilize a variable in cmdlinenv00.c
Otherwise if restored task exit we get error message in form
| Error (cr-restore.c:1302): 7244 exited, status=0
while restored task simply finished working.
Pointed-out-by: Andrey Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
This one is actually an internal kernel magic number for pipefs filesystem
and shouldn't be changed.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Existing ones are boring. Let's switch them into geographical coordinates
of various Russian towns in NNNNEEEE form.
4 digits for a coordinate give us up to 2km of inaccuracy, which is more
than enough to find a town. We cannot use longitude further than 99.99,
i.e. we won't cover the Far East region, but that's OK -- there's more than
enough good candidates even in the European part of the country only.
Feel free to extend.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Plus a small infrastructure change to fork a test task
in a desired namespace.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Only two fields are modifiable -- hostname and domainname. So
read them on dump and write on restore.
File format is simple --
u32 magic
u32 length of nodename
u8[] nodename string
u32 length of domainname
u8[] domainname string
For OpenVZ we can write the release at the end, but this is later.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
New option -n to dump/restore namespaces.
Fork the namespaces dumping task and write a helper for switching a namespace.
Prepare the restorer code for restoring namespaces before root task.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
In order to restore task in namespaces we'll have to clone() them,
not fork. Thus switch the restorer into using clone.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
I will need them in the place where we restore the root task.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Split the CR_FD_ bits into per-task and global ones and replace
of CR_FD_DESC_NOPSTREE with CR_FD_DESC_TASK, which is explicit
set of per-task bits.
The CR_FD_DESC_NS will appear soon.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>