- 24 May, 2013 21 commits
-
-
Andrey Vagin authored
Now we restore thread registers immediately after a command, but when we will execute a parasite, it will be impossible. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
We have three arrays for thread related data: item->threads, parasite_ctl->thread and tid_state in parasite. With this patch a thread will have the same index in all arrays. The zero index is used for a thread leader. In this case we don't need to search thread_state in parasite. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
When parasite daemon mode will be implemented we get deprived of ability to fetch registers at the late moment of dumping as we were, thus just bind CoreEntry to pstree item and allocate CoreEntry'ies for every thread found, once process tree is in seized state. Then immediately fill CoreEntry'ies with registers. We use prctl opcode for that but fetch a complete set of registers including FPU state, and convert them into protobuf format. Zombie tasks remains untouched, we allocate CoreEntry for them right at moment of dumping becuase we don't need registers there to be written on disk. This way get_task_regs no longer need parasite_ctl argument and it's zapped. Still parasite_ctl has own copy of general registers set but this is because we need them to be in cpu native format unlike ones kept in CoreEntry. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Before this patch sigframes were constructed in restorer. We are going to construct sigframes for parasites. Both parasite and restorer should be as thing as posible. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
The first one fills sigframe and the second one restores another registers. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
struct thread_restore_args contains many pointers on different objects, only a few of them are really required. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Wait while futex @f value is equal to @v Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Instead of opencoded mark injection provide a helper for easier grepability. [xemul: Go ahead and remove the INIT_VDSO_MARK at all] Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Emelyanov authored
Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
The [vdso] mark in procfs output is not reliable, so since we know which prot it should has, escape obvious mishints. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
In case if we have created vdso proxy the rt-vdso should not be dumped because it will be re-created on next restore anyway. Thus with help of parasite service routine find the rt-vdso and tear it off from VMAs list. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
In case if we need vdso proxy there is a need to recognize it somehow on further checkpoint action. But such vdso won't be recognized by the kernel and [vdso] mark won't appear in procfs output. Thus we put own mark on it. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
We will need it in parasite code to detect run time vdso area. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
When a task being restored we may meet two situations - vdso in image doesn't match the runtime vdso provided by a kernel. For this case we need to patch dumpee vdso redirecting calls to runtime vdso, thus dumpee vdso become a proxy. - vdso in image does match the runtime vdso, in this case we simply remap runtime vdso to address where dumpee vdso lives. Plain remapping here is quite important and allows us to save vdso pfn which will be used in parasite code later. Note after this patch the restored task may have two vdso in memory. Proper dumping of such situation will be addressed in future patches. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Runtime vdso need to be kept in some safe place when all self-vmas are unmapped. So we reserve space for it in restorer blob area and then remap it into. It's quite important to do a remap here rather than data copy because otherwise pfn of vdso disappear and in future we won't be able to detect vdso are on dumping stage. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
During criu startup we need to fill symbol table of own run-time vdso provided by the kernel. We will need this data for vdso proxy. Because this functions are not used in restorer code, we move them out of PIE (since PIE code must remain as small as possible). Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
It's quite minimal at moment and provides only two helpers - vdso_redirect_calls, to patch vdso area redirectling calls to some new place. - vdso_fill_symtable, to parse vma area as vdso library and fill symbols table with offsets and names. Because these routines will be needed in both regular criu code and restorer code -- we compile it in pie format. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Will need to extend it to support vdso-pie code which used in both -- pie code and plain executable code. I know it's ugly and I must invent some more elegant way, but need some solution at moment to be able to compile existing code. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Vladimir Davydov authored
With the patch zdtm will check not only periodic timers, but also one-shot ones. Set one-shot timer to expire in a very long interval (INT_MAX in the test), and check its remaining value after checkpoint/restore. The following relationship must hold: initial_value - remaining_value = time_passed Signed-off-by:
Vladimir Davydov <vdavydov@parallels.com> Acked-by:
Andrew Vagin <avagin@parallels.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 23 May, 2013 11 commits
-
-
Andrey Vagin authored
An archive is saved in unsuccessful case. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
It's optional. It's going to be used in jenkins. time bash -x test//zdtm.sh static/maps04 real 0m40.220s user 0m0.096s sys 0m12.822s time bash -x test//zdtm.sh -t static/maps04 real 0m9.904s user 0m0.074s sys 0m1.630s Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Here are a few bugs which hide each other. * memcmp(&newset, &oldset, sizeof(newset) returns 0 is masks are equal. * sigprocmask return sigset_t and it contains extra bits for the future, so we need to initialize all this bits otherwise they will contain random data. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Will need them in pie code soon. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
There will be a couple of more builtin helpers needed in pie code soon. Thus to unify approach do - rename asm/memcpy_64.h to asm/string.h - introduce include/asm-generic/string.h file where all helpers are implemented if optimized variant is not yet provided Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
RHEL6 is shipped with libc 2.12 where no prlimit helper provided (which was pushed into libc itself since 2.13). So we implement own proxy for convenience. Note, if libc does support prlimit itself we simply don't use any proxy and call it directly. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
We will need it for own prlimit proxy call. Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
This constants are system wide, so move them to mem.h header for reuse sake. [ xemul: It was kerndat.h in the patch ] Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 21 May, 2013 6 commits
-
-
Andrey Vagin authored
==22653== Syscall param read(buf) points to unaddressable byte(s) ==22653== at 0x50480B0: __read_nocancel (in /usr/lib64/libpthread-2.17.so) ==22653== by 0x40CF7C: parasite_dump_pages_seized (mem.c:244) ==22653== by 0x41681D: cr_dump_tasks (cr-dump.c:1533) ==22653== by 0x40448C: main (crtools.c:309) Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Pavel Tikhomirov authored
On ubuntu this don't compile if no check. Signed-off-by:
Pavel Tikhomirov <snorcht@gmail.com> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
When a kernel didn't show vma flags, we set MAP_GROWSDOWN for stack vmas, but it's not reliable. E.g. thread stacks are mapped without MAP_GROWSDOWN. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Andrey Vagin authored
The size of vma can be changed after parsing flags. For example we need to add a guard page for vma with MAP_GROWSDOWN. Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
The link must be read after restore on original file descriptor since namespace id do change between c/r sessions. https://bugzilla.openvz.org/show_bug.cgi?id=2599Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
- 20 May, 2013 2 commits
-
-
Andrey Vagin authored
Signed-off-by:
Andrey Vagin <avagin@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-
Cyrill Gorcunov authored
It's being reported that some systems (as Ubuntu 13.04) already have struct tcp_repair_opt definition in their system headers. | sk-tcp.c:25:8: error: redefinition of struct tcp_repair_opt | sk-tcp.c:31:2: error: redeclaration of enumerator TCP_NO_QUEUE So add a facility for compile time testing for reported entities to be present on a system. For this we generate include/config.h where all tested entries will lay and source code need to include it only in places where really needed. Reported-by:
Vasily Averin <vvs@parallels.com> Acked-by:
Kir Kolyshkin <kir@openvz.org> Signed-off-by:
Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by:
Pavel Emelyanov <xemul@parallels.com>
-