No description
Find a file
Cyrill Gorcunov caa64d974d tty: Use regular files engine to save paths to the peers, v5
Currently we're using predefined format for master/slave pty peers:
masters are always /dev/ptmx, while slaves are /dev/pts/$index,
where $index is the peer number.

While fitting most of distros this is not always correct and slave peers
might be mounted to an arbitrary place, so that we need to somehow
carry paths with ourself in image.

Instead of bloating current tty image lets use regular file engine instead
and on checkpoint stage save a path to the link in regfiles set, then on
restore simply fetch it from the image.

Such approach will help in future when we need to support multiple
instances of devpts filesystem.

To support backward compatibility with images where no regfile
records are present we generate new one on the fly in
pty_alloc_reg() helper.

Because of the need to restore dead slave peers and restore of
the controlling terminal we need to generate that named "fake
inverted" pty_alloc_fake_reg() helper: in particular if
we need to open dead slave peer we generate fake master peer,
open it and the close out. Almost the same situation in
restoring contolling terminal -- we get master peer, generate
appropriate fake slave object, open it, manipulate, then
close it out and free.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Tycho Andersen <tycho.andersen@canonical.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2014-10-23 17:54:23 +04:00
arch AArch64: Remove TASK_SIZE from mmap_seized 2014-10-07 15:46:47 +04:00
contrib Add a convenience shell script for Docker container C/R 2014-09-09 16:08:22 +04:00
Documentation cpuinfo: Add "cpuinfo [dump|check]" commands, v2 2014-10-03 13:26:58 +04:00
include files-reg: Add try_collect_special_file 2014-10-23 17:51:49 +04:00
lib restore: Introduce the --restore-sibling option 2014-09-10 18:30:30 +04:00
pie tty: parasite -- Don't call for TIOCGPKT/TIOCGPTLCK on non-ptys 2014-10-23 17:51:27 +04:00
protobuf tty: proto -- Add comments on some fields 2014-10-08 18:53:52 +04:00
scripts travis: add compilation of tests 2014-10-14 14:22:01 +04:00
test zdtm/stopped: fix stopped test 2014-10-09 19:17:59 +04:00
.gitignore lib: Generate pkgconfig file 2014-08-04 13:57:18 +04:00
.mailmap repo: Add mailmap file 2012-03-25 23:31:20 +04:00
.travis.yml criu: add .travis.yml (v3) 2014-09-30 21:51:16 +04:00
action-scripts.c scripts: Fix path assignment 2014-09-09 22:07:57 +04:00
bfd.c bfd: Use ERR_PTR and such instead of BREADERR 2014-10-02 14:56:39 +04:00
cgroup.c cg: restore special cpuset props only in cgs criu creates 2014-10-07 12:57:28 +04:00
COPYING Add LGPL licence for library directory 2013-04-01 12:29:06 +04:00
cr-check.c check: make check_ptrace_peeksiginfo and check_sigqueuinfo as static 2014-10-14 10:50:54 +04:00
cr-dedup.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
cr-dump.c dump: don't play with a function exit code 2014-10-17 17:22:49 +04:00
cr-exec.c criu: Several formatting fixes 2014-01-14 09:33:19 +04:00
cr-restore.c restore: clear breakpoints only for alive tasks 2014-10-14 10:44:50 +04:00
cr-service.c cpuinfo: rpc -- Add CPUINFO_DUMP/CPUINFO_CHECK commands, v2 2014-10-03 13:27:00 +04:00
cr-show.c cpuinfo: x86 -- Add protobuf entry 2014-10-03 13:26:56 +04:00
CREDITS Add the CREDITS file 2012-07-30 13:52:37 +04:00
crtools crtools: rename binary to criu 2013-04-30 20:17:55 +04:00
crtools.c dump: pre-load kernel modules 2014-10-14 14:21:05 +04:00
eventfd.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
eventpoll.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
fifo.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
file-ids.c files-ids: generate id-s accoding with mnt_id, st->st_dev and st->st_ino 2014-04-21 22:39:28 +04:00
file-lock.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
files-ext.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
files-reg.c files-reg: Add try_collect_special_file 2014-10-23 17:51:49 +04:00
files.c files: Add file_desc_init helper 2014-10-23 17:51:32 +04:00
fsnotify.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
image-desc.c cpuinfo: x86 -- Add protobuf entry 2014-10-03 13:26:56 +04:00
image.c pstree: Store task's netns on pstree-item 2014-10-01 13:35:11 +04:00
ipc_ns.c ns: Factor out namespace switching call 2014-09-30 21:54:11 +04:00
irmap.c irmap: Get root mntfd before releasing tasks on predump 2014-10-01 09:37:04 +04:00
kcmp-ids.c kcmp: Fix ret code comparison 2014-04-22 12:51:15 +04:00
kerndat.c Dump capabilities from the parasite 2014-08-15 23:10:44 +04:00
libnetlink.c netlink: Lower netlink error report log level 2013-07-04 15:49:02 +04:00
log.c restore: open the pidfile with O_EXCL 2014-09-03 20:58:24 +04:00
Makefile test: clean the "test" directory from test/Makefile 2014-09-02 16:10:55 +04:00
Makefile.config crtools: check for setproctitle_init 2014-09-02 16:14:39 +04:00
Makefile.crtools bfd: File-descriptors based buffered read 2014-09-23 20:48:38 +04:00
Makefile.inc install: install criu-service logrotate config 2014-02-18 12:39:50 +04:00
mem.c rst: Rework the rst_info referencing 2014-10-01 13:34:38 +04:00
mount.c mnt: Use ns walking helper 2014-10-14 18:01:56 +04:00
namespaces.c ns: Introduce ns walking helper 2014-10-14 18:01:27 +04:00
net.c net: Use ns walking helper 2014-10-14 18:01:38 +04:00
netfilter.c iptables: use cr_system instead of system 2013-10-02 20:09:37 +04:00
page-pipe.c log: Use pr_quelled helper 2014-09-03 20:56:58 +04:00
page-read.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
page-xfer.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
pagemap-cache.c pagemap-cache: Use page.h helpers 2014-02-21 16:29:41 +04:00
parasite-syscall.c tty: parasite -- Don't call for TIOCGPKT/TIOCGPTLCK on non-ptys 2014-10-23 17:51:27 +04:00
pipes.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
plugin.c plugin: Rework plugins API, v2 2014-09-03 20:48:36 +04:00
proc_parse.c mount: proc-parse -- Show @mnt_id on debug print as well 2014-10-03 13:21:16 +04:00
protobuf-desc.c cpuinfo: x86 -- Add protobuf entry 2014-10-03 13:26:56 +04:00
protobuf.c img: Prepare to use bfd engine 2014-09-30 21:48:53 +04:00
pstree.c pstree: Add helper for adding helpers to pstree 2014-10-14 18:02:36 +04:00
ptrace.c unseize: Don't print error when unseizing stopped task into stopped state 2013-12-20 23:22:04 +04:00
rbtree.c code: Fix spaced indentation where found 2012-08-11 21:36:03 +04:00
README Update README file so that it looks more informative on github front page 2014-01-24 20:42:08 +04:00
rst-malloc.c whitespace-at-eol cleanup 2013-12-12 10:00:45 +04:00
sd-daemon.c systemd socket activation support 2013-12-12 09:58:50 +04:00
sd-daemon.h systemd socket activation support 2013-12-12 09:58:50 +04:00
security.c security: skip obtaining additional groups for root, as they don't matter 2014-08-06 18:58:44 +04:00
shmem.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
sigframe.c sigframe: cast the pointer to the field ucontext::uc_sigmask to k_rtsigset_t 2014-04-08 15:36:09 +04:00
signalfd.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sk-inet.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sk-netlink.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sk-packet.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sk-queue.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
sk-tcp.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
sk-unix.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sockets.c dump: pre-load kernel modules 2014-10-14 14:21:05 +04:00
stats.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
string.c string: Add strlcat helper 2013-11-29 15:36:07 +04:00
sysctl.c add int(CTL_32) 2014-10-08 19:23:24 +04:00
sysfs_parse.c Use --root instead of --aufs-root 2014-08-27 14:31:40 +04:00
timerfd.c img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
tty.c tty: Use regular files engine to save paths to the peers, v5 2014-10-23 17:54:23 +04:00
tun.c img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
util.c cg: use one path style throughout cg restore code 2014-10-07 12:56:52 +04:00
uts_ns.c ns: Factor out namespace switching call 2014-09-30 21:54:11 +04:00

criu
====

An utility to checkpoint/restore tasks. Using this tool, you can
freeze a running application (or part of it) and checkpoint it to
a hard drive as a collection of files. You can then use the files
to restore and run the application from the point it was frozen
at. The distinctive feature of the CRIU project is that it is
mainly implemented in user space.

The project home is at http://criu.org

Pages worth starting with are
* Kernel configuration, compilation, etc: http://criu.org/Installation
* A simple example of usage: http://criu.org/Simple_loop
* More sophisticated example with graphical app: http://criu.org/VNC