Re: sysrq loglevel

From: Andy Whitcroft
Date: Wed Jan 07 2009 - 15:50:46 EST


On Wed, Jan 07, 2009 at 11:25:39AM -0800, Andrew Morton wrote:
> On Wed, 7 Jan 2009 12:37:58 +0000 Andy Whitcroft <apw@xxxxxxxxxxxxx> wrote:
>
> > It seems that we deliberatly manage the console_loglevel while handling a
> > sysrq request. Raising it to 7 to emit the sysrq command header, and then
> > lower it before processing the command itself. When booting the kernel
> > 'quiet' this means that we only see the header of the command and not its
> > output on the console, the whole thing is in dmesg and thereby in syslog
> > (if it is working).
>
> I always thought it was fairly stupid. Wouldn't we get the same effect
> by tossing that code and switching those printks to KERN_EMERG?

I believe it is different as the level is still KERN_INFO and that is
what the consumers of /proc/kmsg will see, and that might affect where
they are logged to.

> > void __handle_sysrq(int key, struct tty_struct *tty, int check_mask)
> > [...]
> > console_loglevel = 7;
> > printk(KERN_INFO "SysRq : ");
> > [...]
> > printk("%s\n", op_p->action_msg);
> > console_loglevel = orig_log_level;
> > op_p->handler(key, tty);
> > [...]
> >
> > Is this intentional? I can see arguments both ways. One way to look at
> > it would be that I asked for the output so I should get it regardless.
> > The other side might be that consoles can be really slow (serial or
> > something) and so only outputting it there if logging is enabled
> > generally is sane.
> >
> > Obviously we can work round this at the moment using sysrq-7 to up the
> > loglevel before the command and sysrq-4 after to restore quiet.
> >
> > What do people think. If we are happy with the status quo then I will
> > spin a documentation patch to point out this behaviour and the work
> > around. Else I will happily spin a patch to fix it.
> >
>
> There is a legitimate use case, I think: to emit the sysrq command's
> output into the log bufffer and not to the console[s]. So you can do
>
> echo t > /proc/sysrq-trigger
> dmesg -s 1000000 > foo

Yeah I agree. I will spin a documentation patch to capture this
reasoning so we don't end up asking again in a years time.

-apw
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/