diff options
author | Chen Gong <gong.chen@linux.intel.com> | 2011-05-16 11:00:27 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2011-05-16 11:05:00 -0700 |
commit | 06cf91b4b4aafa50ee0a94c81d2c6922a18af242 (patch) | |
tree | f45fe916103b323a714c8958048b8adab1f944b1 /fs/pstore | |
parent | 8d38d74b648513dd8ed8bd2b67d899208ef4e09e (diff) | |
download | op-kernel-dev-06cf91b4b4aafa50ee0a94c81d2c6922a18af242.zip op-kernel-dev-06cf91b4b4aafa50ee0a94c81d2c6922a18af242.tar.gz |
pstore: fix pstore filesystem mount/remount issue
Currently after mount/remount operation on pstore filesystem,
the content on pstore will be lost. It is because current ERST
implementation doesn't support multi-user usage, which moves
internal pointer to the end after accessing it. Adding
multi-user support for pstore usage.
Signed-off-by: Chen Gong <gong.chen@linux.intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'fs/pstore')
-rw-r--r-- | fs/pstore/platform.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 912403c..f2c3ff2 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -156,17 +156,23 @@ void pstore_get_records(void) u64 id; enum pstore_type_id type; struct timespec time; - int failed = 0; + int failed = 0, rc; if (!psi) return; mutex_lock(&psinfo->buf_mutex); + rc = psi->open(psi); + if (rc) + goto out; + while ((size = psi->read(&id, &type, &time)) > 0) { if (pstore_mkfile(type, psi->name, id, psi->buf, (size_t)size, time, psi->erase)) failed++; } + psi->close(psi); +out: mutex_unlock(&psinfo->buf_mutex); if (failed) |