@@ -602,8 +602,10 @@ int pstore_register(struct pstore_info *psi)
if (pstore_is_mounted())
pstore_get_records(0);
- if (psi->flags & PSTORE_FLAGS_DMESG)
+ if (psi->flags & PSTORE_FLAGS_DMESG) {
+ pstore_dumper.max_reason = psinfo->max_reason;
pstore_register_kmsg();
+ }
if (psi->flags & PSTORE_FLAGS_CONSOLE)
pstore_register_console();
if (psi->flags & PSTORE_FLAGS_FTRACE)
@@ -97,6 +97,8 @@ struct pstore_record {
* @read_mutex: serializes @open, @read, @close, and @erase callbacks
* @flags: bitfield of frontends the backend can accept writes for
* @data: backend-private pointer passed back during callbacks
+ * @max_reason: Used when PSTORE_FLAGS_DMESG is set. Contains the
+ * kmsg_dump_reason enum value.
*
* Callbacks:
*
@@ -180,6 +182,7 @@ struct pstore_info {
int flags;
void *data;
+ int max_reason;
int (*open)(struct pstore_info *psi);
int (*close)(struct pstore_info *psi);
Add a new field to pstore_info that passes information about kmesg dump maximum reason. This allows a finer control of what kmesg dumps are stored on pstore device. Those clients that do not explicitly set this field (keep it equal to 0), get the default behavior: dump only Oops and Panics, and dump everything if printk.always_kmsg_dump is provided. Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> --- fs/pstore/platform.c | 4 +++- include/linux/pstore.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-)