criu/include
Gabriel Guimaraes dbaab31f31 Workaround for the OverlayFS bug present before Kernel 4.2
This is here only to support the Linux Kernel between versions
3.18 and 4.2. After that, this workaround is not needed anymore,
but it will work properly on both a kernel with and without the bug.

The bug is that when a process has a file open in an OverlayFS directory,
the information in /proc/<pid>/fd/<fd> and /proc/<pid>/fdinfo/<fd>
is wrong, so we grab that information from the mountinfo table instead.

This is done every time fill_fdlink is called.
We first check to see if the mnt_id and st_dev numbers currently match
some entry in the mountinfo table. If so, we already have the correct mnt_id
and no fixup is needed.

Then we proceed to see if there are any overlayFS mounted directories
in the mountinfo table. If so, we concatenate the mountpoint with the
name of the file, and stat the resulting path to check if we found the
correct device id and node number. If that is the case, we update the
mount id and link variables with the correct values.

Signed-off-by: Gabriel Guimaraes <gabriellimaguimaraes@gmail.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
2015-08-07 14:30:41 +03:00
..
asm-generic Use run-time page size where it matters 2015-04-22 15:39:05 +03:00
action-scripts.h scripts: Add ACT_MAX limit and make @action_names being const 2014-10-27 21:30:37 +04:00
aio.h aio: Restore AIO contexts 2014-12-26 18:13:40 +03:00
bfd.h bfd: Don't leak image-open flags into bfdopen 2015-03-16 15:58:14 +03:00
bug.h bug: Include <stdbool.h> 2014-02-21 16:27:16 +04:00
cgroup.h cg: add --cgroup-root option 2014-08-19 12:58:36 +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 cpuinfo: Add "cpuinfo [dump|check]" commands, v2 2014-10-03 13:26:58 +04:00
cr-errno.h cr_errno: move cr_err helpers into cr_errno.h 2014-12-22 13:50:45 +03:00
cr-service-const.h service: allocate buffers for messages dinamically (v2) 2015-04-21 16:09:09 +03:00
cr-service.h scripts: Use numeric action val in RPC notifications 2014-09-05 13:48:27 +04:00
cr-show.h img: Introduce the struct cr_img 2014-09-30 21:48:13 +04:00
cr_options.h Workaround for the OverlayFS bug present before Kernel 4.2 2015-08-07 14:30:41 +03:00
criu-log.h criu: print correct errno messages from pr_perror() 2015-02-13 15:14:44 +03:00
criu-plugin.h plugin: Explicit assign plugin hooks 2014-09-19 17:39:06 +04:00
crtools.h security: create separate security.h header 2015-02-10 16:53:54 +03: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
fifo.h img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
file-ids.h 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.h locks: Don't dump locks in per-task manner (v3) 2014-09-02 17:44:46 +04:00
files-reg.h reg-files: Do not try to linkat with wrong user 2015-02-13 16:11:38 +04:00
files.h service: add ability to set inherit file descriptors (v3) 2015-03-30 13:09:25 +03:00
fs-magic.h remap: add a dead pid /proc remap 2014-09-19 17:42:48 +04:00
fsnotify.h fsnotify: merge fanotify mark image into fanotify image (v3) 2014-09-03 20:51:39 +04:00
image-desc.h add netns protobuf entry and image, also add conf to net device entry 2015-04-09 18:59:17 +03:00
image.h Add restoring of unnamed unix sockets. 2015-07-29 17:53:36 +03:00
imgset.h img: Introduce the struct cr_img 2014-09-30 21:48:13 +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 ns: Factor out namespace switching call 2014-09-30 21:54:11 +04:00
irmap.h irmap: Get root mntfd before releasing tasks on predump 2014-10-01 09:37:04 +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 kerndat: Introduce task_size variable 2015-08-03 17:14:15 +03:00
libnetlink.h nlk: Add error callback to do_rtnl_req 2015-01-22 18:54:37 +03: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 pie: add printf-like functionality to simple_buf 2015-06-16 12:17:35 +03:00
lsm.h Fix antique style declarations in lsm.[ch] 2015-06-02 15:21:10 +03:00
magic.h img: Introduce v1.1 images (v2) 2015-04-14 15:18:32 +03: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 Workaround for the OverlayFS bug present before Kernel 4.2 2015-08-07 14:30:41 +03:00
namespaces.h revert 246367e4e4 "add walk_all flag to walk_namespaces" 2015-04-14 22:34:40 +03:00
net.h Allow the veth-pair option to specify a bridge 2015-01-12 14:54:18 +03: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 page-read: Explicitly mark ENOENT with return code 2015-03-13 14:42:11 +03:00
page-xfer.h mem: check existence of parent images before dumping pages (v2) 2014-11-29 19:32:40 +03:00
pagemap-cache.h Use run-time page size where it matters 2015-04-22 15:39:05 +03:00
parasite-syscall.h vdso: Fix misprint in ifdef 2015-06-08 23:34:58 +03:00
parasite.h tty: Rework tty_driver structure 2015-04-02 20:20:01 +03: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 plugin: Rework plugins API, v2 2014-09-03 20:48:36 +04:00
posix-timer.h posix-timers: Helper for freeing proc parsed data 2014-04-17 12:01:02 +04:00
prctl.h seccomp: add initial support for SECCOMP_MODE_STRICT 2015-06-24 17:38:32 +03:00
proc_parse.h Workaround for the OverlayFS bug present before Kernel 4.2 2015-08-07 14:30:41 +03:00
protobuf-desc.h add netns protobuf entry and image, also add conf to net device entry 2015-04-09 18:59:17 +03:00
protobuf.h img: Remove O_OPT and COLLECT_OPTIONAL 2015-03-13 14:42:01 +03:00
pstree.h pstree_item: Keep has_seccomp field on rst_info tail 2015-07-14 14:01:48 +03:00
ptrace.h ptrace: split task_seize into seize_catch_task and seize_wait_task 2015-08-07 13:47:11 +03:00
rbtree.h x86: moved x86-specific files into the directory arch/x86. 2013-01-09 17:02:47 +04:00
restorer.h restorer: Replace most hard-coded TASK_SIZE use 2015-08-03 17:14:17 +03:00
rst-malloc.h rst: Lock rst memory allocations earlier 2015-07-14 14:00:27 +03:00
rst_info.h restore: fix race in calculation of a number of zombies 2015-08-03 17:12:10 +03:00
seccomp.h don't assume the kernel has CONFIG_SECCOMP 2015-07-13 14:50:35 +03:00
security.h security: add cr_fchown 2015-02-10 16:54:31 +03:00
seize.h crtools: split cr-dump.c in two files 2015-08-06 14:31:06 +03:00
servicefd.h usernsd: The way to restore priviledged stuff in userns 2015-02-13 16:11:38 +04:00
setproctitle.h crtools: check for setproctitle_init 2014-09-02 16:14:39 +04:00
shmem.h shmem: Turn shmem-info into shared objects from shremap ones 2015-01-12 14:47:24 +03:00
sigframe.h parasite: don't include restorer.h in parasite-syscall.c 2013-11-06 12:39:36 +04:00
signalfd.h img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sk-inet.h log: don't forget LF for pr_err() 2015-07-16 14:24:13 +03:00
sk-packet.h img: Rename fdset -> imgset 2014-09-30 21:48:10 +04:00
sk-queue.h crtools: move all stuff about vma together 2013-11-06 12:43:49 +04:00
sockets.h socket: remove unused code 2015-08-03 17:06:19 +03:00
stats.h stats: Fix restore pages stats 2014-02-04 14:03:10 +04:00
string.h make: config -- Add testing if we have libbsd installed 2014-03-26 01:44:23 +04:00
syscall-types.h add the waitid syscall 2015-07-23 15:17:54 +03:00
sysctl.h sysctl: Make CTL_READ nonfatal 2015-05-12 15:58:58 +03:00
sysfs_parse.h Added AUFS support. 2014-08-21 18:35:22 +04:00
timerfd.h rst: Fix timerfd rst memory management 2015-07-14 13:59:39 +03:00
tty.h tty: Rework tty_driver structure 2015-04-02 20:20:01 +03:00
tun.h check/zdtm: Introduce fine-grained feature testing 2015-01-22 18:55:34 +03: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 util: Fix the ispathsub corner case 2014-11-09 23:26:56 +04:00
uts_ns.h ns: Factor out namespace switching call 2014-09-30 21:54:11 +04:00
vdso.h vdso: Implement vDSO proxification of any vvar/vdso order 2014-08-04 15:35:03 +04:00
vma.h Pass task_size to vma_area_is_private() 2015-08-03 17:14:18 +03:00
xmalloc.h core: Allocate CoreEntry (except arch) with single xmalloc 2014-03-14 13:39:28 +04:00