diff options
| author | Josh Boyer <jwboyer@redhat.com> | 2013-02-12 16:07:22 -0500 |
|---|---|---|
| committer | Tony Luck <tony.luck@intel.com> | 2013-02-12 16:07:22 -0500 |
| commit | fb0af3f2b1b613e5ea75426d454c7e5b1d1eef49 (patch) | |
| tree | 2ef5fd07b1684073d1b0d2fea0466e38466f92a8 | |
| parent | a93bc0c6e07ed9bac44700280e65e2945d864fd4 (diff) | |
pstore: Create a convenient mount point for pstore
Using /dev/pstore as a mount point for the pstore filesystem is slightly
awkward. We don't normally mount filesystems in /dev/ and the /dev/pstore
file isn't created automatically by anything. While this method will
still work, we can create a persistent mount point in sysfs. This will
put pstore on par with things like cgroups and efivarfs.
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Tony Luck <tony.luck@intel.com>
| -rw-r--r-- | Documentation/ABI/testing/pstore | 10 | ||||
| -rw-r--r-- | fs/pstore/inode.c | 18 |
2 files changed, 22 insertions, 6 deletions
diff --git a/Documentation/ABI/testing/pstore b/Documentation/ABI/testing/pstore index ff1df4e3b059..5fca9f5e10a3 100644 --- a/Documentation/ABI/testing/pstore +++ b/Documentation/ABI/testing/pstore | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | Where: /dev/pstore/... | 1 | Where: /sys/fs/pstore/... (or /dev/pstore/...) |
| 2 | Date: March 2011 | 2 | Date: March 2011 |
| 3 | Kernel Version: 2.6.39 | 3 | Kernel Version: 2.6.39 |
| 4 | Contact: tony.luck@intel.com | 4 | Contact: tony.luck@intel.com |
| @@ -11,9 +11,9 @@ Description: Generic interface to platform dependent persistent storage. | |||
| 11 | of the console log is captured, but other interesting | 11 | of the console log is captured, but other interesting |
| 12 | data can also be saved. | 12 | data can also be saved. |
| 13 | 13 | ||
| 14 | # mount -t pstore -o kmsg_bytes=8000 - /dev/pstore | 14 | # mount -t pstore -o kmsg_bytes=8000 - /sys/fs/pstore |
| 15 | 15 | ||
| 16 | $ ls -l /dev/pstore | 16 | $ ls -l /sys/fs/pstore/ |
| 17 | total 0 | 17 | total 0 |
| 18 | -r--r--r-- 1 root root 7896 Nov 30 15:38 dmesg-erst-1 | 18 | -r--r--r-- 1 root root 7896 Nov 30 15:38 dmesg-erst-1 |
| 19 | 19 | ||
| @@ -27,9 +27,9 @@ Description: Generic interface to platform dependent persistent storage. | |||
| 27 | the file will signal to the underlying persistent storage | 27 | the file will signal to the underlying persistent storage |
| 28 | device that it can reclaim the space for later re-use. | 28 | device that it can reclaim the space for later re-use. |
| 29 | 29 | ||
| 30 | $ rm /dev/pstore/dmesg-erst-1 | 30 | $ rm /sys/fs/pstore/dmesg-erst-1 |
| 31 | 31 | ||
| 32 | The expectation is that all files in /dev/pstore | 32 | The expectation is that all files in /sys/fs/pstore/ |
| 33 | will be saved elsewhere and erased from persistent store | 33 | will be saved elsewhere and erased from persistent store |
| 34 | soon after boot to free up space ready for the next | 34 | soon after boot to free up space ready for the next |
| 35 | catastrophe. | 35 | catastrophe. |
diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c index 67de74ca85f4..e4bcb2cf055a 100644 --- a/fs/pstore/inode.c +++ b/fs/pstore/inode.c | |||
| @@ -418,9 +418,25 @@ static struct file_system_type pstore_fs_type = { | |||
| 418 | .kill_sb = pstore_kill_sb, | 418 | .kill_sb = pstore_kill_sb, |
| 419 | }; | 419 | }; |
| 420 | 420 | ||
| 421 | static struct kobject *pstore_kobj; | ||
| 422 | |||
| 421 | static int __init init_pstore_fs(void) | 423 | static int __init init_pstore_fs(void) |
| 422 | { | 424 | { |
| 423 | return register_filesystem(&pstore_fs_type); | 425 | int err = 0; |
| 426 | |||
| 427 | /* Create a convenient mount point for people to access pstore */ | ||
| 428 | pstore_kobj = kobject_create_and_add("pstore", fs_kobj); | ||
| 429 | if (!pstore_kobj) { | ||
| 430 | err = -ENOMEM; | ||
| 431 | goto out; | ||
| 432 | } | ||
| 433 | |||
| 434 | err = register_filesystem(&pstore_fs_type); | ||
| 435 | if (err < 0) | ||
| 436 | kobject_put(pstore_kobj); | ||
| 437 | |||
| 438 | out: | ||
| 439 | return err; | ||
| 424 | } | 440 | } |
| 425 | module_init(init_pstore_fs) | 441 | module_init(init_pstore_fs) |
| 426 | 442 | ||
