aboutsummaryrefslogtreecommitdiffstats
path: root/fs/pstore/platform.c
diff options
context:
space:
mode:
authorMatthew Garrett <mjg@redhat.com>2011-07-21 16:57:52 -0400
committerTony Luck <tony.luck@intel.com>2011-07-22 19:14:06 -0400
commit638c1fd3033c76778e6d9975ad8a4a9cdd5b96d9 (patch)
treede8b772157162b8a7a0901f4df5fb25faef6b21d /fs/pstore/platform.c
parent02f8c6aee8df3cdc935e9bdd4f2d020306035dbe (diff)
pstore: Extend API for more flexibility in new backends
Some pstore implementations may not have a static context, so extend the API to pass the pstore_info struct to all calls and allow for a context pointer. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'fs/pstore/platform.c')
-rw-r--r--fs/pstore/platform.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c
index f2c3ff20ea68..221c04e5e333 100644
--- a/fs/pstore/platform.c
+++ b/fs/pstore/platform.c
@@ -94,11 +94,12 @@ static void pstore_dump(struct kmsg_dumper *dumper,
94 memcpy(dst, s1 + s1_start, l1_cpy); 94 memcpy(dst, s1 + s1_start, l1_cpy);
95 memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); 95 memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy);
96 96
97 id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy); 97 id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy,
98 psinfo);
98 if (reason == KMSG_DUMP_OOPS && pstore_is_mounted()) 99 if (reason == KMSG_DUMP_OOPS && pstore_is_mounted())
99 pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id, 100 pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id,
100 psinfo->buf, hsize + l1_cpy + l2_cpy, 101 psinfo->buf, hsize + l1_cpy + l2_cpy,
101 CURRENT_TIME, psinfo->erase); 102 CURRENT_TIME, psinfo);
102 l1 -= l1_cpy; 103 l1 -= l1_cpy;
103 l2 -= l2_cpy; 104 l2 -= l2_cpy;
104 total += l1_cpy + l2_cpy; 105 total += l1_cpy + l2_cpy;
@@ -166,9 +167,9 @@ void pstore_get_records(void)
166 if (rc) 167 if (rc)
167 goto out; 168 goto out;
168 169
169 while ((size = psi->read(&id, &type, &time)) > 0) { 170 while ((size = psi->read(&id, &type, &time, psi)) > 0) {
170 if (pstore_mkfile(type, psi->name, id, psi->buf, (size_t)size, 171 if (pstore_mkfile(type, psi->name, id, psi->buf, (size_t)size,
171 time, psi->erase)) 172 time, psi))
172 failed++; 173 failed++;
173 } 174 }
174 psi->close(psi); 175 psi->close(psi);
@@ -196,10 +197,10 @@ int pstore_write(enum pstore_type_id type, char *buf, size_t size)
196 197
197 mutex_lock(&psinfo->buf_mutex); 198 mutex_lock(&psinfo->buf_mutex);
198 memcpy(psinfo->buf, buf, size); 199 memcpy(psinfo->buf, buf, size);
199 id = psinfo->write(type, size); 200 id = psinfo->write(type, size, psinfo);
200 if (pstore_is_mounted()) 201 if (pstore_is_mounted())
201 pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id, psinfo->buf, 202 pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id, psinfo->buf,
202 size, CURRENT_TIME, psinfo->erase); 203 size, CURRENT_TIME, psinfo);
203 mutex_unlock(&psinfo->buf_mutex); 204 mutex_unlock(&psinfo->buf_mutex);
204 205
205 return 0; 206 return 0;