mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-31 06:15:24 +00:00
mm: rework of dumping shared memory
vma_entry contains shmid and all shared memory are dumped in own files. The most interesting thing is restore. A maping is restored by process with the smallest pid. The mamping is created before executing restorer. We map a full mapping and restore it's conten, then we open a file from /proc/pid/map_files and store a descriptor in vma_info. The mapping is unmaped. Now we can map any region of this mapping in the restorer. We use this trick, because a target process may have this mapping in some places and the restorer has not function to open proc files. v2: fix error hangling xemul: Fixed static-s and args for cr_dump_shmem Signed-off-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
31feef8ab4
commit
e869c16df5
@@ -21,10 +21,8 @@ enum {
|
||||
|
||||
CR_FD_FDINFO,
|
||||
CR_FD_PAGES,
|
||||
CR_FD_SHMEM_PAGES,
|
||||
CR_FD_CORE,
|
||||
CR_FD_PIPES,
|
||||
CR_FD_SHMEM,
|
||||
CR_FD_SIGACT,
|
||||
CR_FD_UNIXSK,
|
||||
CR_FD_INETSK,
|
||||
@@ -46,6 +44,8 @@ enum {
|
||||
|
||||
CR_FD_PID_MAX, /* fmt, pid */
|
||||
|
||||
CR_FD_SHMEM_PAGES,
|
||||
|
||||
CR_FD_MAX
|
||||
};
|
||||
|
||||
@@ -75,12 +75,11 @@ extern struct cr_fd_desc_tmpl fdset_template[CR_FD_MAX];
|
||||
|
||||
#define FMT_FNAME_FDINFO "fdinfo-%d.img"
|
||||
#define FMT_FNAME_PAGES "pages-%d.img"
|
||||
#define FMT_FNAME_SHMEM_PAGES "pages-shmem-%d.img"
|
||||
#define FMT_FNAME_SHMEM_PAGES "pages-shmem-%ld.img"
|
||||
#define FMT_FNAME_CORE "core-%d.img"
|
||||
#define FMT_FNAME_CORE_OUT "core-%d.img.out"
|
||||
#define FMT_FNAME_PIPES "pipes-%d.img"
|
||||
#define FMT_FNAME_PSTREE "pstree-%d.img"
|
||||
#define FMT_FNAME_SHMEM "shmem-%d.img"
|
||||
#define FMT_FNAME_SIGACTS "sigacts-%d.img"
|
||||
#define FMT_FNAME_UNIXSK "unixsk-%d.img"
|
||||
#define FMT_FNAME_INETSK "inetsk-%d.img"
|
||||
@@ -119,10 +118,8 @@ struct cr_fdset {
|
||||
#define CR_FD_DESC_TASK (\
|
||||
CR_FD_DESC_USE(CR_FD_FDINFO) |\
|
||||
CR_FD_DESC_USE(CR_FD_PAGES) |\
|
||||
CR_FD_DESC_USE(CR_FD_SHMEM_PAGES) |\
|
||||
CR_FD_DESC_USE(CR_FD_CORE) |\
|
||||
CR_FD_DESC_USE(CR_FD_PIPES) |\
|
||||
CR_FD_DESC_USE(CR_FD_SHMEM) |\
|
||||
CR_FD_DESC_USE(CR_FD_SIGACT) |\
|
||||
CR_FD_DESC_USE(CR_FD_UNIXSK) |\
|
||||
CR_FD_DESC_USE(CR_FD_INETSK) |\
|
||||
|
Reference in New Issue
Block a user