aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAruna Balakrishnaiah <aruna@linux.vnet.ibm.com>2013-08-16 16:53:19 -0400
committerTony Luck <tony.luck@intel.com>2013-08-19 13:18:11 -0400
commit9a4e1398208d147a9240731a1f8cfe7d8cc4c553 (patch)
tree61b16758244f641d861839887b19d5a0a144223a
parentb0aad7a99c1df90c23ff4bac76eea9cf25049e9e (diff)
pstore: Introduce new argument 'compressed' in the read callback
Backends will set the flag 'compressed' after reading the log from persistent store to indicate the data being returned to pstore is compressed or not. Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Tony Luck <tony.luck@intel.com>
-rw-r--r--arch/powerpc/platforms/pseries/nvram.c2
-rw-r--r--drivers/acpi/apei/erst.c4
-rw-r--r--drivers/firmware/efi/efi-pstore.c3
-rw-r--r--fs/pstore/platform.c4
-rw-r--r--fs/pstore/ram.c3
-rw-r--r--include/linux/pstore.h2
6 files changed, 11 insertions, 7 deletions
diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c
index dbe5dadb5fcc..6c4dc52ac0b5 100644
--- a/arch/powerpc/platforms/pseries/nvram.c
+++ b/arch/powerpc/platforms/pseries/nvram.c
@@ -598,7 +598,7 @@ static int nvram_pstore_write(enum pstore_type_id type,
598 */ 598 */
599static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type, 599static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
600 int *count, struct timespec *time, char **buf, 600 int *count, struct timespec *time, char **buf,
601 struct pstore_info *psi) 601 bool *compressed, struct pstore_info *psi)
602{ 602{
603 struct oops_log_info *oops_hdr; 603 struct oops_log_info *oops_hdr;
604 unsigned int err_type, id_no, size = 0; 604 unsigned int err_type, id_no, size = 0;
diff --git a/drivers/acpi/apei/erst.c b/drivers/acpi/apei/erst.c
index bcdf8cefcb9e..b412e9137e36 100644
--- a/drivers/acpi/apei/erst.c
+++ b/drivers/acpi/apei/erst.c
@@ -935,7 +935,7 @@ static int erst_open_pstore(struct pstore_info *psi);
935static int erst_close_pstore(struct pstore_info *psi); 935static int erst_close_pstore(struct pstore_info *psi);
936static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, int *count, 936static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, int *count,
937 struct timespec *time, char **buf, 937 struct timespec *time, char **buf,
938 struct pstore_info *psi); 938 bool *compressed, struct pstore_info *psi);
939static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason, 939static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
940 u64 *id, unsigned int part, int count, bool compressed, 940 u64 *id, unsigned int part, int count, bool compressed,
941 size_t size, struct pstore_info *psi); 941 size_t size, struct pstore_info *psi);
@@ -991,7 +991,7 @@ static int erst_close_pstore(struct pstore_info *psi)
991 991
992static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, int *count, 992static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, int *count,
993 struct timespec *time, char **buf, 993 struct timespec *time, char **buf,
994 struct pstore_info *psi) 994 bool *compressed, struct pstore_info *psi)
995{ 995{
996 int rc; 996 int rc;
997 ssize_t len = 0; 997 ssize_t len = 0;
diff --git a/drivers/firmware/efi/efi-pstore.c b/drivers/firmware/efi/efi-pstore.c
index fab6892f7053..9a5425f3f885 100644
--- a/drivers/firmware/efi/efi-pstore.c
+++ b/drivers/firmware/efi/efi-pstore.c
@@ -87,7 +87,8 @@ static int efi_pstore_read_func(struct efivar_entry *entry, void *data)
87 87
88static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type, 88static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
89 int *count, struct timespec *timespec, 89 int *count, struct timespec *timespec,
90 char **buf, struct pstore_info *psi) 90 char **buf, bool *compressed,
91 struct pstore_info *psi)
91{ 92{
92 struct pstore_read_data data; 93 struct pstore_read_data data;
93 94
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index 56218cb35267..6418eb77d64b 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -428,6 +428,7 @@ void pstore_get_records(int quiet)
428 enum pstore_type_id type; 428 enum pstore_type_id type;
429 struct timespec time; 429 struct timespec time;
430 int failed = 0, rc; 430 int failed = 0, rc;
431 bool compressed;
431 432
432 if (!psi) 433 if (!psi)
433 return; 434 return;
@@ -436,7 +437,8 @@ void pstore_get_records(int quiet)
436 if (psi->open && psi->open(psi)) 437 if (psi->open && psi->open(psi))
437 goto out; 438 goto out;
438 439
439 while ((size = psi->read(&id, &type, &count, &time, &buf, psi)) > 0) { 440 while ((size = psi->read(&id, &type, &count, &time, &buf, &compressed,
441 psi)) > 0) {
440 rc = pstore_mkfile(type, psi->name, id, count, buf, 442 rc = pstore_mkfile(type, psi->name, id, count, buf,
441 (size_t)size, time, psi); 443 (size_t)size, time, psi);
442 kfree(buf); 444 kfree(buf);
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index fe7188f742b7..292722327811 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -133,7 +133,8 @@ ramoops_get_next_prz(struct persistent_ram_zone *przs[], uint *c, uint max,
133 133
134static ssize_t ramoops_pstore_read(u64 *id, enum pstore_type_id *type, 134static ssize_t ramoops_pstore_read(u64 *id, enum pstore_type_id *type,
135 int *count, struct timespec *time, 135 int *count, struct timespec *time,
136 char **buf, struct pstore_info *psi) 136 char **buf, bool *compressed,
137 struct pstore_info *psi)
137{ 138{
138 ssize_t size; 139 ssize_t size;
139 ssize_t ecc_notice_size; 140 ssize_t ecc_notice_size;
diff --git a/include/linux/pstore.h b/include/linux/pstore.h
index abfca4f59422..abd437d0a8a7 100644
--- a/include/linux/pstore.h
+++ b/include/linux/pstore.h
@@ -55,7 +55,7 @@ struct pstore_info {
55 int (*close)(struct pstore_info *psi); 55 int (*close)(struct pstore_info *psi);
56 ssize_t (*read)(u64 *id, enum pstore_type_id *type, 56 ssize_t (*read)(u64 *id, enum pstore_type_id *type,
57 int *count, struct timespec *time, char **buf, 57 int *count, struct timespec *time, char **buf,
58 struct pstore_info *psi); 58 bool *compressed, struct pstore_info *psi);
59 int (*write)(enum pstore_type_id type, 59 int (*write)(enum pstore_type_id type,
60 enum kmsg_dump_reason reason, u64 *id, 60 enum kmsg_dump_reason reason, u64 *id,
61 unsigned int part, int count, bool compressed, 61 unsigned int part, int count, bool compressed,