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>
Handle SIGCHLD and if someone failed, nr_in_progress is set to -1.
If crtools notices that nr_in_progress is negative, it kills all
tasks.
v2: * Use named constants for task_entries->start in restorer.c
* Use SA_NOCLDWAIT when setting sigchild handler,
this makes sigchild handler simpler.
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Since we operate with syscalls directly we are
to convert signal's structures between image and
kernel formats, without intermediate glibc layer.
Note this involves chaging sa_entry::flags to u64
(since it's long int value in kernel).
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
A parasite code dumps all sigactions in sigact.pid.
v2: remove hard code for sizeof(sigset_t)
Signed-off-by: Andrey Vagin <avagin@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
They are actually banned in kernel for now, but
we might end up needing them, so better to have
them in-place.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Use explicit registers name instead just to be sure it
wont cause side effects on most gcc versions.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
It's been found that gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
ignores register variables so to be on a safe side rewrite
syscalls with inline assembly without them.
nb: gcc version 4.6.1 20110908 (Red Hat 4.6.1-9) (GCC)
compiles them correctly.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Also re-make image to be 2 pages in size
which should be enough for basic params we
need to restore tasks.
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>