• Pavel Emelyanov's avatar
    SCM: Dump and restore SCM_RIGHTs · 5087faa0
    Pavel Emelyanov authored
    Most of the pieces has already been described in the previous patches :)
    so here's the summary.
    
    * Dump:
    
    When receiving a message, also receive any SCM-s (already there) and when
    SCM_RIGHTs one is met -- go ahead and just dump received descriptors using
    regular code, but taking current as the victim task.
    
    Few words about file paths resolution -- since we do dump path-ed files
    by receiving them from victim's parasite, such files sent via sockets
    should still work OK, as we still receive them, just from another socket.
    
    Several problems here:
    
    1. Unix sockets sent via unix sockets form knots. Not supported.
    2. Eventpolls sent via unix might themseves poll unix sockets. Knots
       again. Not supported either.
    
    * Restore:
    
    On restore we need to make unix socket wait for the soon-to-be-scm-sent
    descriptors to get restored, so we need to find them, then put a dependency.
    After that, the fake fdinfo entry is attached to the respective file
    descs, when sent the respective descriptors are closed.
    
    https://github.com/xemul/criu/issues/251
    
    v2: Addressed comments from Kirill
    
    * Moved prepare_scms before adding fake fles (with comment)
    * Add scm-only fles as fake, thus removing close_scm_fds
    * Try hard finding any suitable fle to use as scm one when
      queuing them for unix socket scm list, only allocate a new
      one if really needed
    Reviewed-by: 's avatarKirill Tkhai <ktkhai@virtuozzo.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
    5087faa0
Name
Last commit
Last update
..
google/protobuf Loading commit data...
Makefile Loading commit data...
autofs.proto Loading commit data...
binfmt-misc.proto Loading commit data...
cgroup.proto Loading commit data...
core-aarch64.proto Loading commit data...
core-arm.proto Loading commit data...
core-ppc64.proto Loading commit data...
core-s390.proto Loading commit data...
core-x86.proto Loading commit data...
core.proto Loading commit data...
cpuinfo.proto Loading commit data...
creds.proto Loading commit data...
eventfd.proto Loading commit data...
eventpoll.proto Loading commit data...
ext-file.proto Loading commit data...
fdinfo.proto Loading commit data...
fh.proto Loading commit data...
fifo.proto Loading commit data...
file-lock.proto Loading commit data...
fown.proto Loading commit data...
fs.proto Loading commit data...
fsnotify.proto Loading commit data...
ghost-file.proto Loading commit data...
inventory.proto Loading commit data...
ipc-desc.proto Loading commit data...
ipc-msg.proto Loading commit data...
ipc-sem.proto Loading commit data...
ipc-shm.proto Loading commit data...
ipc-var.proto Loading commit data...
macvlan.proto Loading commit data...
mm.proto Loading commit data...
mnt.proto Loading commit data...
netdev.proto Loading commit data...
ns.proto Loading commit data...
opts.proto Loading commit data...
packet-sock.proto Loading commit data...
pagemap.proto Loading commit data...
pipe-data.proto Loading commit data...
pipe.proto Loading commit data...
pstree.proto Loading commit data...
regfile.proto Loading commit data...
remap-file-path.proto Loading commit data...
rlimit.proto Loading commit data...
rpc.proto Loading commit data...
sa.proto Loading commit data...
seccomp.proto Loading commit data...
siginfo.proto Loading commit data...
signalfd.proto Loading commit data...
sit.proto Loading commit data...
sk-inet.proto Loading commit data...
sk-netlink.proto Loading commit data...
sk-opts.proto Loading commit data...
sk-packet.proto Loading commit data...
sk-unix.proto Loading commit data...
stats.proto Loading commit data...
sysctl.proto Loading commit data...
tcp-stream.proto Loading commit data...
time.proto Loading commit data...
timer.proto Loading commit data...
timerfd.proto Loading commit data...
tty.proto Loading commit data...
tun.proto Loading commit data...
userns.proto Loading commit data...
utsns.proto Loading commit data...
vma.proto Loading commit data...