• Cyrill Gorcunov's avatar
    tty: Add checkpoint/restore for unix terminals v6 · 89a7a45d
    Cyrill Gorcunov authored
    Usually the PTYs represent a pair of links -- master peer and slave
    peer. Master peer must be opened before slave. Internally, when kernel
    creates master peer it also generates a slave interface in a form of
    /dev/pts/N, where N is that named pty "index". Master/slave connection
    unambiguously identified by this index.
    
    Still, one master can carry multiple slaves -- for example a user opens
    one master via /dev/ptmx and appropriate /dev/pts/N in sequence.
    The result will be the following
    
    master
    `- slave 1
    `- slave 2
    
    both slave will have same master index but different file descriptors.
    Still inside the kernel pty parameters are same for both slaves. Thus
    only one slave parameters should be restored, there is no need to carry
    all parameters for every slave peer we've found.
    
    Not yet addressed problems:
    
    - At moment of restore the master peer might be already closed for
      any reason so to resolve such problem we need to open a fake master
      peer with proper index and hook a slave on it, then we close
      master peer.
    
    - Need to figure out how to deal with ttys which have some
      data in buffers not yet flushed, at moment this data will
      be simply lost during c/r
    
    - Need to restore control terminals
    
    - Need to fetch tty flags such as exclusive/packet-mode,
      this can't be done without kernel patching
    
    [ avagin@:
       - ideas on contol terminals restore
       - overall code redesign and simplification
    ]
    
    v4:
     - drop redundant pid from dump_chrdev
     - make sure optional fown is passed on regular ptys
     - add a comments about zeroifying termios
     - get rid of redundant empty line in files.c
    
    v5 (by avagin@):
     - complete rework of tty image format, now we have
       two files -- tty.img and tty-info.img. The idea
       behind to reduce data being stored.
    
    v6 (by xemul@):
     - packet mode should be set to true in image,
       until properly fetched from the kernel
     - verify image data on retrieval
    Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
    CC: Andrey Vagin <avagin@openvz.org>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    89a7a45d
Makefile 3.28 KB