• Andrew Vagin's avatar
    file: add a general approach for inherited files · c26da2fd
    Andrew Vagin authored
    How to restore an external file? The problem is that a file
    can be opened with different flags (O_APPNED, O_RDWR, O_RONLY,
    etc). These flags can't be changed for a file descriptor, so
    we can't just duplicate an inherit fd, when we meet an external
    file.
    
    A file is external, when we can't access them directly.
    CRIU is able to restore a file descriptor, if it knows
    how to open it, so we need to provide a way to open
    an external file.
    
    The idea of this patch is that we can open an external file
    via /proc/self/fd/X where X is an inherit fd.
    
    This approach works for files and fifo.
    
    An example how it can be used:
    criu -o dump.log -D dump/fifo.py/6/1 -v4 -t 6 --external file[72:a3e7]
    criu -o restore.log -D dump/fifo.py/6/1 -v4 --restore-sibling --inherit-fd fd[4]:file[72:a3e7] --restore-detached
    
    https://github.com/xemul/criu/issues/104
    
    Cc: Saied Kazemi <saied@google.com>
    Signed-off-by: 's avatarAndrew Vagin <avagin@virtuozzo.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    c26da2fd
regfile.proto 340 Bytes