Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Josh Boyer and committed by
Tony Luck
fb0af3f2 a93bc0c6

+22 -6
+5 -5
Documentation/ABI/testing/pstore
··· 1 - Where: /dev/pstore/... 1 + Where: /sys/fs/pstore/... (or /dev/pstore/...) 2 2 Date: March 2011 3 3 Kernel Version: 2.6.39 4 4 Contact: tony.luck@intel.com ··· 11 11 of the console log is captured, but other interesting 12 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 17 total 0 18 18 -r--r--r-- 1 root root 7896 Nov 30 15:38 dmesg-erst-1 19 19 ··· 27 27 the file will signal to the underlying persistent storage 28 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 33 will be saved elsewhere and erased from persistent store 34 34 soon after boot to free up space ready for the next 35 35 catastrophe.
+17 -1
fs/pstore/inode.c
··· 418 418 .kill_sb = pstore_kill_sb, 419 419 }; 420 420 421 + static struct kobject *pstore_kobj; 422 + 421 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 441 module_init(init_pstore_fs) 426 442