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@xxxxxxxxxx> --- fs/pstore/platform.c | 4 +++- include/linux/pstore.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 408277ee3cdb..75bf8a43f92a 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -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) diff --git a/include/linux/pstore.h b/include/linux/pstore.h index e779441e6d26..45ae424bfeb5 100644 --- a/include/linux/pstore.h +++ b/include/linux/pstore.h @@ -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); -- 2.25.1