pstore: Introduce new argument 'compressed' in the read callback
authorAruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Fri, 16 Aug 2013 20:53:19 +0000 (13:53 -0700)
committerTony Luck <tony.luck@intel.com>
Mon, 19 Aug 2013 17:18:11 +0000 (10:18 -0700)
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>
arch/powerpc/platforms/pseries/nvram.c
drivers/acpi/apei/erst.c
drivers/firmware/efi/efi-pstore.c
fs/pstore/platform.c
fs/pstore/ram.c
include/linux/pstore.h

index dbe5dad..6c4dc52 100644 (file)
@@ -598,7 +598,7 @@ static int nvram_pstore_write(enum pstore_type_id type,
  */
 static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
                                int *count, struct timespec *time, char **buf,
-                               struct pstore_info *psi)
+                               bool *compressed, struct pstore_info *psi)
 {
        struct oops_log_info *oops_hdr;
        unsigned int err_type, id_no, size = 0;
index bcdf8ce..b412e91 100644 (file)
@@ -935,7 +935,7 @@ static int erst_open_pstore(struct pstore_info *psi);
 static int erst_close_pstore(struct pstore_info *psi);
 static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, int *count,
                           struct timespec *time, char **buf,
-                          struct pstore_info *psi);
+                          bool *compressed, struct pstore_info *psi);
 static int erst_writer(enum pstore_type_id type, enum kmsg_dump_reason reason,
                       u64 *id, unsigned int part, int count, bool compressed,
                       size_t size, struct pstore_info *psi);
@@ -991,7 +991,7 @@ static int erst_close_pstore(struct pstore_info *psi)
 
 static ssize_t erst_reader(u64 *id, enum pstore_type_id *type, int *count,
                           struct timespec *time, char **buf,
-                          struct pstore_info *psi)
+                          bool *compressed, struct pstore_info *psi)
 {
        int rc;
        ssize_t len = 0;
index fab6892..9a5425f 100644 (file)
@@ -87,7 +87,8 @@ static int efi_pstore_read_func(struct efivar_entry *entry, void *data)
 
 static ssize_t efi_pstore_read(u64 *id, enum pstore_type_id *type,
                               int *count, struct timespec *timespec,
-                              char **buf, struct pstore_info *psi)
+                              char **buf, bool *compressed,
+                              struct pstore_info *psi)
 {
        struct pstore_read_data data;
 
index 56218cb..6418eb7 100644 (file)
@@ -428,6 +428,7 @@ void pstore_get_records(int quiet)
        enum pstore_type_id     type;
        struct timespec         time;
        int                     failed = 0, rc;
+       bool                    compressed;
 
        if (!psi)
                return;
@@ -436,7 +437,8 @@ void pstore_get_records(int quiet)
        if (psi->open && psi->open(psi))
                goto out;
 
-       while ((size = psi->read(&id, &type, &count, &time, &buf, psi)) > 0) {
+       while ((size = psi->read(&id, &type, &count, &time, &buf, &compressed,
+                               psi)) > 0) {
                rc = pstore_mkfile(type, psi->name, id, count, buf,
                                  (size_t)size, time, psi);
                kfree(buf);
index fe7188f..2927223 100644 (file)
@@ -133,7 +133,8 @@ ramoops_get_next_prz(struct persistent_ram_zone *przs[], uint *c, uint max,
 
 static ssize_t ramoops_pstore_read(u64 *id, enum pstore_type_id *type,
                                   int *count, struct timespec *time,
-                                  char **buf, struct pstore_info *psi)
+                                  char **buf, bool *compressed,
+                                  struct pstore_info *psi)
 {
        ssize_t size;
        ssize_t ecc_notice_size;
index abfca4f..abd437d 100644 (file)
@@ -55,7 +55,7 @@ struct pstore_info {
        int             (*close)(struct pstore_info *psi);
        ssize_t         (*read)(u64 *id, enum pstore_type_id *type,
                        int *count, struct timespec *time, char **buf,
-                       struct pstore_info *psi);
+                       bool *compressed, struct pstore_info *psi);
        int             (*write)(enum pstore_type_id type,
                        enum kmsg_dump_reason reason, u64 *id,
                        unsigned int part, int count, bool compressed,