No description
Find a file
Cyrill Gorcunov b146fe4af6 inotify: Use ghost files if the watchee is a deleted file, v2
The watch target might be a deleted file. In this case we can't
re-create it on restore procedure.

A typical scenario
------------------

 fd = inotify_init1()
 wd = open(path)
 inotify_add_watch(path)
 unlink(path)
 ... checkpoint ...

here we have a @path which is unlinked but still present in inotify
watch list because inode is not yet freed. And if the program is killed
after checkpoint the last reference to a path get eliminated and inode
get freed from the kernel memory.

Thus any furher attempts to open the path via file handle (note that file
handle can't be used to create new file, the kernel doesn't permit that)
will simply fail.

So if plain opening via file handle failed we assume that at least
the file might be in our ghost files list (we're optimists, right?)
and if we successed we simply use a path generated by ghost file
engine for us.

v2 [by xemul@]:
 - gather reference to ghost file remap early

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2012-12-06 11:11:19 +04:00
arch/x86 make: move syscalls files and build to separated directory 2012-11-22 18:52:59 +04:00
Documentation docs: Update documentation 2012-10-18 19:47:17 +04:00
include ghost-files: Save device and inode in image 2012-12-06 11:11:10 +04:00
pie signal: fix logig about SIGMAX (v2) 2012-12-04 19:26:54 +04:00
protobuf ghost-files: Save device and inode in image 2012-12-06 11:11:10 +04:00
test zdtm: cmdlinenv00 -- fix false positive fail on 'auxv' corruption after 32-bit -> 64-bit migration 2012-12-03 17:40:32 +04:00
.gitignore Update .gitignore 2012-07-09 15:03:38 +04:00
.mailmap repo: Add mailmap file 2012-03-25 23:31:20 +04:00
COPYING Add COPYING file 2011-12-05 14:11:05 +04:00
cr-check.c check: Check for SO_BINDTODEVICE is get-able 2012-12-04 16:35:58 +03:00
cr-dump.c fd: Consolidate . and .. checks in various readdir callers 2012-11-29 21:12:51 +03:00
cr-restore.c rst: Brush up fake vs real tasks post-pgid restore codeflow 2012-12-04 18:49:36 +03:00
cr-show.c fix many unclosed file opened by open_image_ro 2012-10-24 16:51:50 +04:00
CREDITS Add the CREDITS file 2012-07-30 13:52:37 +04:00
crtools.c crtools: update the usage message for log level 2012-11-02 13:45:25 +04:00
eventfd.c eventfd: Add LOG_PREFIX 2012-08-20 15:14:43 +04:00
eventpoll.c files: Hide pslist selection logic into file desc handlers 2012-09-14 21:53:51 +04:00
fifo.c fd: Remove per-filetype make_gen_id abstraction 2012-08-11 22:41:29 +04:00
file-ids.c protobuf: Start switching our image entries to Google's protobuf 2012-07-17 07:10:41 +04:00
files-reg.c ghost-files: Save device and inode in image 2012-12-06 11:11:10 +04:00
files.c fd: Consolidate . and .. checks in various readdir callers 2012-11-29 21:12:51 +03:00
image.c tty: Add show method 2012-09-12 20:00:55 +04:00
inotify.c inotify: Use ghost files if the watchee is a deleted file, v2 2012-12-06 11:11:19 +04:00
ipc_ns.c ipc: update to use sysctl 2012-11-30 17:47:15 +04:00
kcmp-ids.c parasite: remove excessive header deps from parasite.h and friends 2012-05-30 12:50:18 +04:00
libnetlink.c libnetlink: Make sure there is no error happened when dumping is done 2012-11-06 13:41:36 +04:00
log.c log: Don't show time stamp on pr_msg 2012-11-06 13:37:15 +04:00
Makefile make: fix navigation in vim 2012-12-03 14:53:17 +04:00
mount.c fd: Consolidate . and .. checks in various readdir callers 2012-11-29 21:12:51 +03:00
namespaces.c crtools: use a special function for executing external utils 2012-09-28 14:09:58 +04:00
net.c Revert "net: Introduce netdev index to name resolver" 2012-11-28 20:27:16 +03:00
netfilter.c netfilter: add ability to block ipv6 connections 2012-11-23 16:36:22 +04:00
parasite-syscall.c signal: fix logig about SIGMAX (v2) 2012-12-04 19:26:54 +04:00
pipes.c files: Formalize fd restore priorities 2012-09-14 22:09:22 +04:00
proc_parse.c proc_parse: Update inotify format 2012-12-04 19:28:45 +04:00
protobuf.c protobuf: Drop dangling \Space 2012-11-11 13:28:59 +04:00
pstree.c rst: Rename task_entries->nr to ->nr_threads 2012-12-04 17:22:45 +03:00
ptrace.c ptrace: Remove dead code 2012-12-04 23:33:06 +04:00
rbtree.c code: Fix spaced indentation where found 2012-08-11 21:36:03 +04:00
README Drop kernel patching from README 2012-01-29 16:26:36 +04:00
shmem.c shmem: Get rid of static array of dumped shmem areas 2012-08-17 00:20:58 +04:00
signalfd.c fd: Remove per-filetype make_gen_id abstraction 2012-08-11 22:41:29 +04:00
sk-inet.c socket: don't fail if DIAG_SHUTDOWN is absent 2012-11-29 17:43:32 +04:00
sk-packet.c packet: Support mmap-ing of packet sockets 2012-11-02 16:00:18 +03:00
sk-queue.c socket: increase socket buffers for restoring queues (v2) 2012-11-02 13:40:54 +04:00
sk-tcp.c tcp: check a state in refresh_inet_sk (v2) 2012-11-20 17:17:51 +04:00
sk-unix.c socket: don't fail if DIAG_SHUTDOWN is absent 2012-11-29 17:43:32 +04:00
sockets.c sk: Rework bound-dev dump/restore according to new API 2012-11-28 20:24:42 +03:00
sysctl.c parasite: remove excessive header deps from parasite.h and friends 2012-05-30 12:50:18 +04:00
tty.c tty: Use find_next_bit helper in tty_verify_active_pairs 2012-11-26 18:38:28 +04:00
util-net.c fown: get pid and uid-s from parasite 2012-09-05 16:41:14 +04:00
util.c util: Fix vma printing message (pass 2) 2012-11-29 18:16:00 +03:00
uts_ns.c code: Remove trailing whitespaces over .c and .h files 2012-08-11 21:34:35 +04:00

crtools
=======

An utility to checkpoint/restore tasks.

Some code snippets are borrowed from

 - Linux kernel (http://kernel.org/)
 - git (http://git-scm.com/)
 - kvm-tools (https://github.com/penberg/linux-kvm)
 - ptrace-parasite (https://code.google.com/p/ptrace-parasite/)

Many thanks to these projects.

Licensed under GPLv2 (http://www.gnu.org/licenses/gpl-2.0.txt)