[Devel] [PATCH rh7] vtty: n_tty -- Allow write on sole slave vtty peer

Cyrill Gorcunov gorcunov at odin.com
Wed Nov 18 05:16:07 PST 2015


In pcs6 the pty counting has been somewhat sophisticated so in
pcs7 we've simplified it to bring as less changes into vanilla
code as possible (introducing TTY_PINNED_BY_OTHER bit to order
closing sequence). The new accounting works as expected but
there is a small issue -- until master peer get a real user hooked
on it (say containers opens /dev/console on its own and writes
log into it) any write operation return -EIO because line
discipline module tests the @count on the other side of a peer.

I think we can add one small code snippet (just the same
as we did in tty_release() helper to track such situation
and allow to write into sole open vtty.

Basically the issue were that getty inside container wrote
some data upon container's starup and connection from the
node simply didn't get it because data was lost which as
a side effect forced a console user to hit "enter" second
time.

https://jira.sw.ru/browse/PSBM-40740

Signed-off-by: Cyrill Gorcunov <gorcunov at virtuozzo.com>
CC: Vladimir Davydov <vdavydov at virtuozzo.com>
CC: Konstantin Khorenko <khorenko at virtuozzo.com>
CC: Igor Sukhih <igor at parallels.com>
CC: Nikolay Breykin <nbreykin at odin.com>
---
 drivers/tty/n_tty.c |    6 ++++++
 1 file changed, 6 insertions(+)

Index: linux-pcs7.git/drivers/tty/n_tty.c
===================================================================
--- linux-pcs7.git.orig/drivers/tty/n_tty.c
+++ linux-pcs7.git/drivers/tty/n_tty.c
@@ -2041,7 +2041,13 @@ static ssize_t n_tty_write(struct tty_st
 			retval = -ERESTARTSYS;
 			break;
 		}
+#ifdef CONFIG_VE
+		if (tty_hung_up_p(file) ||
+		    (tty->link && !tty->link->count &&
+		     !(test_bit(TTY_PINNED_BY_OTHER, &tty->link->flags)))) {
+#else
 		if (tty_hung_up_p(file) || (tty->link && !tty->link->count)) {
+#endif
 			retval = -EIO;
 			break;
 		}


More information about the Devel mailing list