• Cyrill Gorcunov's avatar
    tty: Use regular files engine to save paths to the peers, v5 · caa64d97
    Cyrill Gorcunov authored
    Currently we're using predefined format for master/slave pty peers:
    masters are always /dev/ptmx, while slaves are /dev/pts/$index,
    where $index is the peer number.
    
    While fitting most of distros this is not always correct and slave peers
    might be mounted to an arbitrary place, so that we need to somehow
    carry paths with ourself in image.
    
    Instead of bloating current tty image lets use regular file engine instead
    and on checkpoint stage save a path to the link in regfiles set, then on
    restore simply fetch it from the image.
    
    Such approach will help in future when we need to support multiple
    instances of devpts filesystem.
    
    To support backward compatibility with images where no regfile
    records are present we generate new one on the fly in
    pty_alloc_reg() helper.
    
    Because of the need to restore dead slave peers and restore of
    the controlling terminal we need to generate that named "fake
    inverted" pty_alloc_fake_reg() helper: in particular if
    we need to open dead slave peer we generate fake master peer,
    open it and the close out. Almost the same situation in
    restoring contolling terminal -- we get master peer, generate
    appropriate fake slave object, open it, manipulate, then
    close it out and free.
    Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
    Acked-by: 's avatarTycho Andersen <tycho.andersen@canonical.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    caa64d97
tty.c 31.1 KB