Re: [PATCH] Console: fall back to /dev/null when no console is availlable

Geert Uytterhoeven
2004-10-06T13:07:18Z

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2129 bytes --]

On Wed, 6 Oct 2004, [iso-8859-1] Jörn Engel wrote:
> On Wed, 6 October 2004 10:43:52 +0200, Geert Uytterhoeven wrote:
> > On Wed, 6 Oct 2004, Willy Tarreau wrote:
> > > On Wed, Oct 06, 2004 at 12:58:57AM +0300, Denis Vlasenko wrote:
> > > > > + if (open("/dev/null", O_RDWR, 0) == 0)
> > > > > + printk(" Falling back to /dev/null.\n");
> > > > > + }
> > > >
> > > > What will happen if /dev is totally empty?
> > >
> > > ... Which is the most probable reason causing this trouble.
>
> I have no idea about the probability, but in the one case I worry
> about, a console is explicitly disabled because it is not wanted.
> /dev does exist and is populated.
>
> > Some debug methods use register_console() to get their print routines
> > registered. If people forget to say e.g. `console=tty0' afterwards, the debug
> > console without the real device cannot be opened through /dev/console, and they
> > get a mysterious error. Usually /dev/console _is_ present in the root fs.
>
> Yes, I thought about doing things at a different level as well. If
> there really is no console, shouldn't /dev/console have the same
> behavious as /dev/null?
>
> Point is that above patch is simpler and empiria didn't give me a
> reason to worry about anything else.

I'll give you another reason :-)

If I do have multiple active struct consoles registered (e.g. normal tty0 or
ttyS0 and a debug console without a real tty), and the /dev/console demux
thinks the debug console is the real one (the one opened if you open
/dev/console), printk() messages will appear on both active consoles, but
/dev/console cannot be opened.

To avoid this problem, the /dev/console demux should walk the list of active
consoles until it finds one that can be opened, or fall back to /dev/null if
none is found.

Does that sound reasonable?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds