The commit is pushed to "branch-rh7-3.10.0-229.7.2.vz7.9.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-229.7.2.vz7.9.10 ------> commit 0eb5cec93f6d06b93c317795d636b68376e366f6 Author: Cyrill Gorcunov <gorcu...@virtuozzo.com> Date: Tue Nov 17 18:18:45 2015 +0400
ve/vtty: Don't zap termios fields on slave peer These fields are sensitive to userspace so was a copy-paste bug in first place when I defined driver fields (the pty as well as vtty devices have same structure in drivers). Also I defined @chars_in_buffer, @flush_buffer and @resize methods for driver to be close to former pcs6 driver structure. Note there is still problem remains: upon vzctl console call the carrige return (enter press) is still required for login prompt to appear, I'm investigating it now. https://jira.sw.ru/browse/PSBM-41057 Signed-off-by: Cyrill Gorcunov <gorcu...@virtuozzo.com> Reviewed-by: Vladimir Davydov <vdavy...@virtuozzo.com> --- drivers/tty/pty.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c index 0ab36f9..b312635 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c @@ -1217,6 +1217,13 @@ static void vtty_remove(struct tty_driver *driver, struct tty_struct *tty) { } +static int vtty_resize(struct tty_struct *tty, struct winsize *ws) +{ + if (tty->driver == vttym_driver) + return pty_resize(tty, ws); + return tty_do_resize(tty, ws); +} + static const struct tty_operations vtty_ops = { .lookup = vtty_lookup, .install = vtty_install, @@ -1226,9 +1233,12 @@ static const struct tty_operations vtty_ops = { .cleanup = pty_cleanup, .write = vtty_write, .write_room = vtty_write_room, + .chars_in_buffer= pty_chars_in_buffer, .set_termios = pty_set_termios, .unthrottle = pty_unthrottle, + .flush_buffer = pty_flush_buffer, .remove = vtty_remove, + .resize = vtty_resize, }; struct tty_driver *vtty_console_driver(int *index) @@ -1301,8 +1311,6 @@ static int __init vtty_init(void) /* 38400 boud rate, 8 bit char size, enable receiver */ vttym_driver->init_termios.c_cflag = B38400 | CS8 | CREAD; vttym_driver->init_termios.c_lflag = 0; - vttym_driver->init_termios.c_ispeed = 38400; - vttym_driver->init_termios.c_ospeed = 38400; tty_set_operations(vttym_driver, &vtty_ops); vttys_driver->driver_name = "vtty_slave"; @@ -1313,12 +1321,7 @@ static int __init vtty_init(void) vttys_driver->type = TTY_DRIVER_TYPE_PTY; vttys_driver->subtype = PTY_TYPE_SLAVE; vttys_driver->init_termios = tty_std_termios; - vttys_driver->init_termios.c_iflag = 0; - vttys_driver->init_termios.c_oflag = 0; vttys_driver->init_termios.c_cflag = B38400 | CS8 | CREAD; - vttys_driver->init_termios.c_lflag = 0; - vttys_driver->init_termios.c_ispeed = 38400; - vttys_driver->init_termios.c_ospeed = 38400; tty_set_operations(vttys_driver, &vtty_ops); if (tty_register_driver(vttym_driver)) _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel