• Andrey Vagin's avatar
    restore: Learn to work with shared struct file-s · d6a1cd0f
    Andrey Vagin authored
    Some process can share one struct file-s, we may find them by "object IDs".
    A file descriptor is opened in one process and send to other via unix socket.
    
    The procedure of restoring files contains four stages.
    * Collect data about all file's descriptors
      On this stage we find process which will restore a file descriptor and
      create a list of processes, who should get this descriptor.
    
    * Create datagrams unix sockets
      If a file descriptor should be received, a unix socket is created
      instead of it.
    
    * Open file descriptors
      A process with the least pid opens a file and sends this file
      descriptors to all one who wait it.
    
    * Receive file descriptors.
    
    When we were thinking up this algoritm, we wanted to minimize a number
    of context switches. A number of context switches is proportional of a
    number of processes.
    Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
    Acked-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
    d6a1cd0f
files.h 244 Bytes