Re: [PATCH v5 2/2] console: Add persistent scrollback buffers for all VGA consoles
From: Manuel Schölling <hidden>
Date: 2016-11-22 16:56:59
Also in:
lkml
Hi Adam, On Mo, 2016-11-21 at 21:17 +0100, Adam Borowski wrote:
On Sun, Nov 20, 2016 at 10:58:08PM +0100, Manuel Schölling wrote:quoted
Add a scrollback buffers for each VGA console. The benefit is that the scrollback history is not flushed when switching between consoles but is persistent. The buffers are allocated on demand when a new console is opened. This breaks tools like clear_console that rely on flushing the scrollback history by switching back and forth between consoles which is why this feature is disabled by default. Use the escape sequence \e[3J instead for flushing the buffer.
First, big thanks for this fix, it's something that greatly annoyed me since forever!
Yeah, me too! ;)
The thing about clear_console is unfortunate: they abused the bug you're fixing. I've asked to use \e[3J (https://bugs.debian.org/845177) so there's hope it'll be applied in stretch; with Debian configuring its glibc to support only kernels from two releases before (in jessie that's 2.6.32, in stretch 3.2)[1] there's hope we can flip the default in several years. Do you suspect any other program relies on VT switch to clear the scrollback?
Not, AFAIK. Although I do not have a complete list of programs that are suppose to do that.
But alas, this commit breaks that very \e[3J. It does only a \e[2J, leaving the scrollback uncleared. For comparison, both mainline and with just your preparatory commit, \e[3J works as expected.
Really? All my tests worked fine: I compiled the kernel with the latest patches, started the kernel in QEMU and then did $ openvt /bin/sh $ echo -e '\e[3J' # scrollback buffer was flushed correctly $ chvt 2 $ echo -e '\e[3J' # scrollback buffer was flushed correctly Can you tell me how you tested it? Maybe I can reproduce the bug. Thanks for spending the time to test it! Bye, Manuel