kmsg_dump: don't run on non-error paths by default
authorMatthew Garrett <mjg@redhat.com>
Mon, 5 Mar 2012 22:59:10 +0000 (14:59 -0800)
committerTim Gardner <tim.gardner@canonical.com>
Mon, 9 Apr 2012 13:52:01 +0000 (07:52 -0600)
commit584a92b6948dfd640f5b4da3dc1a693b9d69ca04
tree125180a472b15bcf559aa7b33537f3292def5a23
parent52789747a352732eb163b145c8b31789ad818e93
kmsg_dump: don't run on non-error paths by default

BugLink: http://bugs.launchpad.net/bugs/944772

Since commit 04c6862c055f ("kmsg_dump: add kmsg_dump() calls to the
reboot, halt, poweroff and emergency_restart paths"), kmsg_dump() gets
run on normal paths including poweroff and reboot.

This is less than ideal given pstore implementations that can only
represent single backtraces, since a reboot may overwrite a stored oops
before it's been picked up by userspace.  In addition, some pstore
backends may have low performance and provide a significant delay in
reboot as a result.

This patch adds a printk.always_kmsg_dump kernel parameter (which can also
be changed from userspace).  Without it, the code will only be run on
failure paths rather than on normal paths.  The option can be enabled in
environments where there's a desire to attempt to audit whether or not a
reboot was cleanly requested or not.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Acked-by: Seiji Aguchi <seiji.aguchi@hds.com>
Cc: Seiji Aguchi <seiji.aguchi@hds.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Marco Stornelli <marco.stornelli@gmail.com>
Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Don Zickus <dzickus@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit c22ab332902333f83766017478c1ef6607ace681)
Acked-by: Colin King <colin.king@canonical.com>
Acked-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Documentation/kernel-parameters.txt
include/linux/kmsg_dump.h
kernel/printk.c