Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
[pandora-kernel.git] / fs / pstore / platform.c
index 86d1038..422962a 100644 (file)
@@ -159,7 +159,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
                        break;
 
                ret = psinfo->write(PSTORE_TYPE_DMESG, reason, &id, part,
-                                   oopscount, hsize + len, psinfo);
+                                   oopscount, hsize, hsize + len, psinfo);
                if (ret == 0 && reason == KMSG_DUMP_OOPS && pstore_is_mounted())
                        pstore_new_entry = 1;
 
@@ -196,7 +196,7 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c)
                        spin_lock_irqsave(&psinfo->buf_lock, flags);
                }
                memcpy(psinfo->buf, s, c);
-               psinfo->write(PSTORE_TYPE_CONSOLE, 0, &id, 0, 0, c, psinfo);
+               psinfo->write(PSTORE_TYPE_CONSOLE, 0, &id, 0, 0, 0, c, psinfo);
                spin_unlock_irqrestore(&psinfo->buf_lock, flags);
                s += c;
                c = e - s;
@@ -221,9 +221,11 @@ static void pstore_register_console(void) {}
 static int pstore_write_compat(enum pstore_type_id type,
                               enum kmsg_dump_reason reason,
                               u64 *id, unsigned int part, int count,
-                              size_t size, struct pstore_info *psi)
+                              size_t hsize, size_t size,
+                              struct pstore_info *psi)
 {
-       return psi->write_buf(type, reason, id, part, psinfo->buf, size, psi);
+       return psi->write_buf(type, reason, id, part, psinfo->buf, hsize,
+                            size, psi);
 }
 
 /*
@@ -239,17 +241,15 @@ int pstore_register(struct pstore_info *psi)
 {
        struct module *owner = psi->owner;
 
+       if (backend && strcmp(backend, psi->name))
+               return -EPERM;
+
        spin_lock(&pstore_lock);
        if (psinfo) {
                spin_unlock(&pstore_lock);
                return -EBUSY;
        }
 
-       if (backend && strcmp(backend, psi->name)) {
-               spin_unlock(&pstore_lock);
-               return -EINVAL;
-       }
-
        if (!psi->write)
                psi->write = pstore_write_compat;
        psinfo = psi;
@@ -274,6 +274,9 @@ int pstore_register(struct pstore_info *psi)
                add_timer(&pstore_timer);
        }
 
+       pr_info("pstore: Registered %s as persistent store backend\n",
+               psi->name);
+
        return 0;
 }
 EXPORT_SYMBOL_GPL(pstore_register);