Invalid pstore_blk use?

From: Florian Fainelli
Date: Thu Jul 14 2022 - 23:49:57 EST

Hi Kees, WeiXiong,

I am trying to make use of pstore_blk which is BTW exactly what I had been looking for to store panic/console logs onto an eMMC partition.

Using the 5.10 kernel plus:

7e2e92e9861b Revert "mark pstore-blk as broken"
01c28bc8f389 pstore/blk: Use the normal block device I/O path
2a7507999638 pstore/blk: remove {un,}register_pstore_blk
fef0b337cd25 pstore/zone: cap the maximum device size

or the android13-5.15 (at Merge 5.15.40 into android13-5.15) kernel with no changes and using:

mount -t pstore pstore /sys/fs/pstore
modprobe pstore_blk blkdev=/dev/mmcblk1p9 best_effort=yes

upon triggering a crash with:

echo c > /proc/sysrq-trigger

and rebooting and remounting the pstore filesystem and loading pstore_blk, I only have:

# ls /sys/fs/pstore/

which contains the entire console log up to, but excluding the crash. The kernel does show that pstore_blk was used for all 3 types of kmsg, pmsg and console:

[ 28.649514] pstore_zone: capping size to 128MiB
[ 28.712894] pstore_zone: registered pstore_blk as backend for kmsg(Oops) pmsg console
[ 28.721145] pstore: Using crash dump compression: deflate
[ 28.906253] printk: console [pstore_blk-1] enabled
[ 28.911229] pstore: Registered pstore_blk as persistent store backend
[ 28.917735] pstore_blk: attached pstore_blk:/dev/mmcblk1p9 (134217728) (no dedicated panic_write!)

there is no automatic reboot upon panic, so I just tend to reboot after 2-3 seconds manually. The kernel is configured with the default CONFIG_PSTORE_* options.

Is the observed behavior a limitation of the best_effort mode? If so, do we have any plans to implementing a non-best effort mode for eMMC devices?