criu/include
Deyan Doychev 69a6bf4439 criu: Add exec-cmd option (v3)
The --exec-cmd option specifies a command that will be execvp()-ed on successful
restore. This way the command specified here will become the parent process of
the restored process tree.

Waiting for the restored processes to finish is responsibility of this command.

All service FDs are closed before we call execvp(). Standad output and error of
the command are redirected to the log file when we are restoring through the RPC
service.

This option will be used when restoring LinuX Containers and it seems helpful
for perf or other use cases when restored processes must be supervised by a
parent.

Two directions were researched in order to integrate CRIU and LXC:

1. We tell to CRIU, that after restoring container is should execve()
   lxc properly explaining to it that there's a new container hanging
   around.

2. We make LXC set himself as child subreaper, then fork() criu and ask
   it to detach (-d) from restore container afterwards. Being a subreaper,
   it should get the container's init into his child list after it.

The main reason for choosing the first option is that the second one can't work
with the RPC service. If we call restore via the service then criu service will
be the top-most task in the hierarchy and will not be able to reparent the
restore trees to any other task in the system. Calling execve from service
worker sub-task (and daemonizing it) should solve this.

Signed-off-by: Deyan Doychev <deyandoichev@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2014-03-25 01:20:02 +04:00
..
asm-generic bitops: Add comment about generic bitops header usage 2014-03-12 00:20:22 +04:00
bug.h bug: Include <stdbool.h> 2014-02-21 16:27:16 +04:00
compiler.h include/compiler.h: Cleanup 2013-02-15 17:34:38 +04:00
config-base.h config-base: Add F_SETPIPE_SZ/F_GETPIPE_SZ 2014-02-18 12:53:09 +04:00
cpu.h cpu: Make cpu routines being per-acrh 2013-02-18 18:42:08 +04:00
cr-service-const.h service: move constants to cr-service-const.h 2013-12-18 14:26:10 +04:00
cr-service.h rpc: Introduce CLI's --action-script analogue 2014-01-30 15:58:45 +04:00
cr-show.h headers: Add \Newline-s for readability sake 2013-11-15 17:00:14 +04:00
cr_options.h criu: Add exec-cmd option (v3) 2014-03-25 01:20:02 +04:00
criu-log.h log: Add pr_warn_once helper 2014-02-28 13:34:29 +04:00
criu-plugin.h net: Add ability to dump external links with plugins 2013-12-26 22:39:04 +04:00
crtools.h v3 deduplication: add dedup comand to criu 2013-12-18 14:51:22 +04:00
err.h headers: Add err.h header 2013-04-02 20:27:51 +04:00
errno.h headers: Move ERESTART codes to errno.h 2013-11-14 22:22:21 +04:00
eventfd.h anon-inode: Don't readlink fd/fd multiple times 2014-02-02 22:14:29 +04:00
eventpoll.h anon-inode: Don't readlink fd/fd multiple times 2014-02-02 22:14:29 +04:00
fcntl.h fsnotify: Open handle with O_PATH, v2 2014-02-25 23:38:35 +04:00
fdset.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
fifo.h collect: Shorten common images collecting code 2013-08-21 03:52:18 +04:00
file-ids.h files: Make fd_id_generate_special return ID into pointer 2014-02-05 16:17:49 +04:00
file-lock.h crtools: don't include crtools.h in other headers 2013-11-06 18:17:38 +04:00
files-reg.h fifo: Don't lookup reg path twice 2014-02-07 13:55:27 +04:00
files.h vma: Don't lookup file_desc for vma twice 2014-02-07 13:51:29 +04:00
fs-magic.h headers: Add fs-magic.h 2014-02-28 13:07:54 +04:00
fsnotify.h anon-inode: Don't readlink fd/fd multiple times 2014-02-02 22:14:29 +04:00
image-desc.h rlimit: Move CR_FD_RLIMIT out of _CR_FD_TASK, v2 2014-03-14 15:44:51 +04:00
image.h image.h: Include fcntl.h 2014-03-14 17:59:40 +04:00
inet_diag.h headers: Unify include guards (in comments) and a few fixes 2012-12-25 22:40:24 +04:00
ipc_ns.h crtools: don't include crtools.h in other headers 2013-11-06 18:17:38 +04:00
irmap.h irmap: Introduce irmap on-disk cache 2014-01-30 16:20:16 +04:00
kcmp-ids.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
kcmp.h headers: Move kcmp_type to kcmp.h 2013-11-14 22:13:59 +04:00
kerndat.h mem: Fix zero_page_pfn type 2014-01-31 00:08:47 +04:00
libnetlink.h headers: Unify include guards (in comments) and a few fixes 2012-12-25 22:40:24 +04:00
list.h criu: Several formatting fixes 2014-01-14 09:33:19 +04:00
lock.h atomic: Use atomic_read instead of atomic_get 2013-08-16 19:37:06 +04:00
log.h plugin: allow to use logging function in plugins 2013-12-18 21:52:12 +04:00
magic.h mount: rename TMPFS_MAGIC into TMPFS_IMG_MAGIC 2014-02-28 13:26:48 +04:00
mem.h mem: Move shmem preparation routine and rename 2014-02-03 23:34:12 +04:00
mman.h headers: Move MADV definitions to own mman.h 2013-11-14 22:48:30 +04:00
mount.h mount: Factor out mount tree build for NEWNS and non-NS cases 2013-12-12 16:19:48 +04:00
namespaces.h namespace: move struct ns_id into namespace.h 2014-03-12 00:23:47 +04:00
net.h rpc: Add ability to specify veth pairs (--veth-pair option) 2014-02-12 00:33:02 +04:00
netfilter.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
netlink_diag.h headers: Add missing __CR_ at last endif 2013-11-15 16:59:57 +04:00
packet_diag.h headers: Unify include guards (in comments) and a few fixes 2012-12-25 22:40:24 +04:00
page-pipe.h page-pipe: split dumping memory on chunks (v3) 2014-02-10 15:06:39 +04:00
page-read.h v2 page-read: rework open_page_read to use in shmem restore 2014-03-18 11:48:58 +04:00
page-xfer.h v3 deduplication: add auto-dedup local 2013-12-18 14:52:04 +04:00
pagemap-cache.h pagemap-cache: Use page.h helpers 2014-02-21 16:29:41 +04:00
parasite-syscall.h headers: Add \Newline-s for readability sake 2013-11-15 17:00:14 +04:00
parasite.h cr: generalize the type to store the value of the TLS register 2014-03-19 10:41:39 +04:00
pid.h headers: Add missing __CR_ at last endif 2013-11-15 16:59:57 +04:00
pipes.h collect: Shorten common images collecting code 2013-08-21 03:52:18 +04:00
plugin.h net: Add ability to dump external links with plugins 2013-12-26 22:39:04 +04:00
posix-timer.h headers: Add missing __CR_ at last endif 2013-11-15 16:59:57 +04:00
prctl.h headers: Move prctl constants to prctl.h 2013-11-14 22:19:43 +04:00
proc_parse.h restore: Parse /proc/self/maps for self mappings 2014-02-07 13:32:21 +04:00
protobuf-desc.h pb: Number PB_ constants 2014-02-02 01:20:49 +04:00
protobuf.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
pstree.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
ptrace.h ptrace: include config.h in ptrace.h 2014-02-07 15:32:17 +04:00
rbtree.h x86: moved x86-specific files into the directory arch/x86. 2013-01-09 17:02:47 +04:00
restorer.h cr: generalize the type to store the value of the TLS register 2014-03-19 10:41:39 +04:00
rst-malloc.h whitespace-at-eol cleanup 2013-12-12 10:00:45 +04:00
rst_info.h mm: Read mmentry early 2014-02-04 11:44:04 +04:00
servicefd.h criu: Remove parent-img service fd 2014-01-24 16:12:46 +04:00
shmem.h mem: Move shmem preparation routine and rename 2014-02-03 23:34:12 +04:00
sigframe.h parasite: don't include restorer.h in parasite-syscall.c 2013-11-06 12:39:36 +04:00
signalfd.h anon-inode: Don't readlink fd/fd multiple times 2014-02-02 22:14:29 +04:00
sk-inet.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
sk-packet.h Make tpacket_req3 definition conditional 2014-02-10 14:31:02 +04:00
sk-queue.h crtools: move all stuff about vma together 2013-11-06 12:43:49 +04:00
sockets.h space-before-tab whitespace cleanup 2013-12-12 10:00:53 +04:00
stats.h stats: Fix restore pages stats 2014-02-04 14:03:10 +04:00
string.h string: Add strlcat helper 2013-11-29 15:36:07 +04:00
syscall-types.h syscalls: Add proper syscalls definition. 2013-07-01 16:19:21 +04:00
sysctl.h headers: Unify include guards (in comments) and a few fixes 2012-12-25 22:40:24 +04:00
tty.h crtools: don't include crtools.h in other headers 2013-11-06 18:17:38 +04:00
tun.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
unix_diag.h x86: moved x86-specific files into the directory arch/x86. 2013-01-09 17:02:47 +04:00
util-pie.h headers: Drop uintX_t usage 2013-12-12 10:03:07 +04:00
util.h vma: Vma allocation helper is now function 2014-02-03 17:18:42 +04:00
uts_ns.h headers: Add extern specificator to functions 2013-11-15 17:00:58 +04:00
vdso.h vdso.c: share the PIE part of the vDSO proxy machinery between all architectures 2014-03-19 21:09:01 +04:00
vma.h vma: Don't lookup file_desc for vma twice 2014-02-07 13:51:29 +04:00
xmalloc.h core: Allocate CoreEntry (except arch) with single xmalloc 2014-03-14 13:39:28 +04:00