• Pavel Emelyanov's avatar
    crtools: Add internal "swrk" action · d30521a3
    Pavel Emelyanov authored
    To help restoring tasks from images as kids to the caller, we can
    do the trick.
    
    1. Caller sets himself as child reaper with PR_SET_CHILD_SUBREAPER prctl
    2. Caller makes sure criu binary is suid-ed and owned by root
    3. Caller forks and calls execv() on criu asking it to restore
    4. Criu finishes restore and exits. All its kids get reparented to the
       criu's parent, i.e. -- to the library caller.
    5. Caller stops being subreaper
    
    In order to make the execv() and arguments passing simpler I propose
    to execv() the service worker function, that accepts options via socket.
    
    This is good for two reasons.
    
    1. We don't have to construct CLI options in libcriu
    2. We reuse other service's facilities, such as security checks,
       ability to dump, pre-dump and other stuff
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    d30521a3
cr-service.c 13.5 KB