Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df36ac1b authored by Tony Luck's avatar Tony Luck Committed by Linus Torvalds
Browse files

pstore: Don't allow high traffic options on fragile devices



Some pstore backing devices use on board flash as persistent
storage. These have limited numbers of write cycles so it
is a poor idea to use them from high frequency operations.

Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent eaadcfeb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -942,6 +942,7 @@ static int erst_clearer(enum pstore_type_id type, u64 id, int count,
static struct pstore_info erst_info = {
	.owner		= THIS_MODULE,
	.name		= "erst",
	.flags		= PSTORE_FLAGS_FRAGILE,
	.open		= erst_open_pstore,
	.close		= erst_close_pstore,
	.read		= erst_reader,
+1 −0
Original line number Diff line number Diff line
@@ -356,6 +356,7 @@ static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count,
static struct pstore_info efi_pstore_info = {
	.owner		= THIS_MODULE,
	.name		= "efi",
	.flags		= PSTORE_FLAGS_FRAGILE,
	.open		= efi_pstore_open,
	.close		= efi_pstore_close,
	.read		= efi_pstore_read,
+5 −2
Original line number Diff line number Diff line
@@ -443,8 +443,11 @@ int pstore_register(struct pstore_info *psi)
		pstore_get_records(0);

	kmsg_dump_register(&pstore_dumper);

	if ((psi->flags & PSTORE_FLAGS_FRAGILE) == 0) {
		pstore_register_console();
		pstore_register_ftrace();
	}

	if (pstore_update_ms >= 0) {
		pstore_timer.expires = jiffies +
+3 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ struct pstore_info {
	char		*buf;
	size_t		bufsize;
	struct mutex	read_mutex;	/* serialize open/read/close */
	int		flags;
	int		(*open)(struct pstore_info *psi);
	int		(*close)(struct pstore_info *psi);
	ssize_t		(*read)(u64 *id, enum pstore_type_id *type,
@@ -70,6 +71,8 @@ struct pstore_info {
	void		*data;
};

#define	PSTORE_FLAGS_FRAGILE	1

#ifdef CONFIG_PSTORE
extern int pstore_register(struct pstore_info *);
extern bool pstore_cannot_block_path(enum kmsg_dump_reason reason);