diff options
| -rw-r--r-- | fs/pstore/platform.c | 10 | ||||
| -rw-r--r-- | include/linux/pstore.h | 4 | 
2 files changed, 14 insertions, 0 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 6b3ff045fe6..ef5ca8a0255 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -188,6 +188,14 @@ static void pstore_register_console(void)  static void pstore_register_console(void) {}  #endif +static int pstore_write_compat(enum pstore_type_id type, +			       enum kmsg_dump_reason reason, +			       u64 *id, unsigned int part, +			       size_t size, struct pstore_info *psi) +{ +	return psi->write_buf(type, reason, id, part, psinfo->buf, size, psi); +} +  /*   * platform specific persistent storage driver registers with   * us here. If pstore is already mounted, call the platform @@ -212,6 +220,8 @@ int pstore_register(struct pstore_info *psi)  		return -EINVAL;  	} +	if (!psi->write) +		psi->write = pstore_write_compat;  	psinfo = psi;  	mutex_init(&psinfo->read_mutex);  	spin_unlock(&pstore_lock); diff --git a/include/linux/pstore.h b/include/linux/pstore.h index 1bd014b8e43..b107484192f 100644 --- a/include/linux/pstore.h +++ b/include/linux/pstore.h @@ -48,6 +48,10 @@ struct pstore_info {  	int		(*write)(enum pstore_type_id type,  			enum kmsg_dump_reason reason, u64 *id,  			unsigned int part, size_t size, struct pstore_info *psi); +	int		(*write_buf)(enum pstore_type_id type, +			enum kmsg_dump_reason reason, u64 *id, +			unsigned int part, const char *buf, size_t size, +			struct pstore_info *psi);  	int		(*erase)(enum pstore_type_id type, u64 id,  			struct pstore_info *psi);  	void		*data;  |