sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget*/translations/zh_CN/admin-guide/pstore-blkmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/zh_TW/admin-guide/pstore-blkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/it_IT/admin-guide/pstore-blkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/ja_JP/admin-guide/pstore-blkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/ko_KR/admin-guide/pstore-blkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/pt_BR/admin-guide/pstore-blkmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget*/translations/sp_SP/admin-guide/pstore-blkmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhD/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk.rsthKubhsection)}(hhh](htitle)}(hpstore block oops/panic loggerh]hpstore block oops/panic logger}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hpstore block (pstore/blk) is an oops/panic logger that writes its logs to a block device and non-block device before the system crashes. You can get these log files by mounting pstore filesystem like::h]hpstore block (pstore/blk) is an oops/panic logger that writes its logs to a block device and non-block device before the system crashes. You can get these log files by mounting pstore filesystem like:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh literal_block)}(h%mount -t pstore pstore /sys/fs/pstoreh]h%mount -t pstore pstore /sys/fs/pstore}hjsbah}(h]h ]h"]h$]h&]hhuh1hhhhK hhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hpstore block conceptsh]hpstore block concepts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hpstore/blk provides efficient configuration method for pstore/blk, which divides all configurations into two parts, configurations for user and configurations for driver.h]hpstore/blk provides efficient configuration method for pstore/blk, which divides all configurations into two parts, configurations for user and configurations for driver.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hConfigurations for user determine how pstore/blk works, such as pmsg_size, kmsg_size and so on. All of them support both Kconfig and module parameters, but module parameters have priority over Kconfig.h]hConfigurations for user determine how pstore/blk works, such as pmsg_size, kmsg_size and so on. All of them support both Kconfig and module parameters, but module parameters have priority over Kconfig.}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hConfigurations for driver are all about block device and non-block device, such as total_size of block device and read/write operations.h]hConfigurations for driver are all about block device and non-block device, such as total_size of block device and read/write operations.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]pstore-block-conceptsah ]h"]pstore block conceptsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hConfigurations for userh]hConfigurations for user}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhhhhhKubh)}(hyAll of these configurations support both Kconfig and module parameters, but module parameters have priority over Kconfig.h]hyAll of these configurations support both Kconfig and module parameters, but module parameters have priority over Kconfig.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hjYhhubh)}(h*Here is an example for module parameters::h]h)Here is an example for module parameters:}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjYhhubh)}(hFpstore_blk.blkdev=/dev/mmcblk0p7 pstore_blk.kmsg_size=64 best_effort=yh]hFpstore_blk.blkdev=/dev/mmcblk0p7 pstore_blk.kmsg_size=64 best_effort=y}hjsbah}(h]h ]h"]h$]h&]hhuh1hhhhK&hjYhhubh)}(h represents the device number of diskh]h)}(hjh]h5/dev/ represents the device number of disk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hu/dev/ represents the device number of partition - device number of disk plus the partition numberh]h)}(hu/dev/ represents the device number of partition - device number of disk plus the partition numberh]hu/dev/ represents the device number of partition - device number of disk plus the partition number}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK3hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(hx/dev/p - same as the above; this form is used when disk name of partitioned disk ends with a digit. h]h)}(hw/dev/p - same as the above; this form is used when disk name of partitioned disk ends with a digit.h]hw/dev/p - same as the above; this form is used when disk name of partitioned disk ends with a digit.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1jhjhhhhhK2ubh)}(hRWhen pstore/blk is built into the kernel, "blkdev" accepts the following variants:h]hVWhen pstore/blk is built into the kernel, “blkdev” accepts the following variants:}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubj)}(hhh](j)}(hi device number in hexadecimal representation, with no leading 0x, for example b302.h]h)}(hi device number in hexadecimal representation, with no leading 0x, for example b302.h]hi device number in hexadecimal representation, with no leading 0x, for example b302.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hj9ubah}(h]h ]h"]h$]h&]uh1jhj6hhhhhNubj)}(hXPARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF represents the unique id of a partition if the partition table provides it. The UUID may be either an EFI/GPT UUID, or refer to an MSDOS partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-filled hex representation of the 32-bit "NT disk signature", and PP is a zero-filled hex representation of the 1-based partition number.h]h)}(hXPARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF represents the unique id of a partition if the partition table provides it. The UUID may be either an EFI/GPT UUID, or refer to an MSDOS partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-filled hex representation of the 32-bit "NT disk signature", and PP is a zero-filled hex representation of the 1-based partition number.h]hXPARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF represents the unique id of a partition if the partition table provides it. The UUID may be either an EFI/GPT UUID, or refer to an MSDOS partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-filled hex representation of the 32-bit “NT disk signature”, and PP is a zero-filled hex representation of the 1-based partition number.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/PARTNROFF= to select a partition in relation to a partition with a known unique id.h]h)}(hhPARTUUID=/PARTNROFF= to select a partition in relation to a partition with a known unique id.h]hhPARTUUID=/PARTNROFF= to select a partition in relation to a partition with a known unique id.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjiubah}(h]h ]h"]h$]h&]uh1jhj6hhhhhNubj)}(hK: major and minor number of the device separated by a colon. h]h)}(hJ: major and minor number of the device separated by a colon.h]hJ: major and minor number of the device separated by a colon.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhjubah}(h]h ]h"]h$]h&]uh1jhj6hhhhhNubeh}(h]h ]h"]h$]h&]j#j$j%hj&j'uh1jhjhhhhhK:ubh)}(h1It accepts the following variants for MTD device:h]h1It accepts the following variants for MTD device:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjhhubj)}(hhh](j)}(h7 MTD device name. "pstore" is recommended.h]h)}(hjh]h; MTD device name. “pstore” is recommended.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubj)}(h# MTD device number. h]h)}(h" MTD device number.h]h" MTD device number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]h ]h"]h$]h&]j#j$j%hj&j'uh1jhjhhhhhKHubeh}(h]blkdevah ]h"]blkdevah$]h&]uh1hhjYhhhhhK+ubh)}(hhh](h)}(h kmsg_sizeh]h kmsg_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKLubh)}(hThe chunk size in KB for oops/panic front-end. It **MUST** be a multiple of 4. It's optional if you do not care about the oops/panic log.h](h2The chunk size in KB for oops/panic front-end. It }(hjhhhNhNubhstrong)}(h**MUST**h]hMUST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhQ be a multiple of 4. It’s optional if you do not care about the oops/panic log.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKNhjhhubh)}(hsThere are multiple chunks for oops/panic front-end depending on the remaining space except other pstore front-ends.h]hsThere are multiple chunks for oops/panic front-end depending on the remaining space except other pstore front-ends.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjhhubh)}(hzpstore/blk will log to oops/panic chunks one by one, and always overwrite the oldest chunk if there is no more free chunk.h]hzpstore/blk will log to oops/panic chunks one by one, and always overwrite the oldest chunk if there is no more free chunk.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjhhubeh}(h] kmsg-sizeah ]h"] kmsg_sizeah$]h&]uh1hhjYhhhhhKLubh)}(hhh](h)}(h pmsg_sizeh]h pmsg_size}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhhhhhKXubh)}(h}The chunk size in KB for pmsg front-end. It **MUST** be a multiple of 4. It's optional if you do not care about the pmsg log.h](h,The chunk size in KB for pmsg front-end. It }(hjUhhhNhNubj)}(h**MUST**h]hMUST}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubhK be a multiple of 4. It’s optional if you do not care about the pmsg log.}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKZhjDhhubh)}(hHUnlike oops/panic front-end, there is only one chunk for pmsg front-end.h]hHUnlike oops/panic front-end, there is only one chunk for pmsg front-end.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjDhhubh)}(hPmsg is a user space accessible pstore object. Writes to */dev/pmsg0* are appended to the chunk. On reboot the contents are available in */sys/fs/pstore/pmsg-pstore-blk-0*.h](h9Pmsg is a user space accessible pstore object. Writes to }(hjhhhNhNubhemphasis)}(h */dev/pmsg0*h]h /dev/pmsg0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhD are appended to the chunk. On reboot the contents are available in }(hjhhhNhNubj)}(h"*/sys/fs/pstore/pmsg-pstore-blk-0*h]h /sys/fs/pstore/pmsg-pstore-blk-0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK_hjDhhubeh}(h] pmsg-sizeah ]h"] pmsg_sizeah$]h&]uh1hhjYhhhhhKXubh)}(hhh](h)}(h console_sizeh]h console_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKdubh)}(hThe chunk size in KB for console front-end. It **MUST** be a multiple of 4. It's optional if you do not care about the console log.h](h0The chunk size in KB for console front-end. It }(hjhhhNhNubj)}(h**MUST**h]hMUST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhN be a multiple of 4. It’s optional if you do not care about the console log.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKfhjhhubh)}(hISimilar to pmsg front-end, there is only one chunk for console front-end.h]hISimilar to pmsg front-end, there is only one chunk for console front-end.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihjhhubh)}(hAll log of console will be appended to the chunk. On reboot the contents are available in */sys/fs/pstore/console-pstore-blk-0*.h](hZAll log of console will be appended to the chunk. On reboot the contents are available in }(hjhhhNhNubj)}(h%*/sys/fs/pstore/console-pstore-blk-0*h]h#/sys/fs/pstore/console-pstore-blk-0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubeh}(h] console-sizeah ]h"] console_sizeah$]h&]uh1hhjYhhhhhKdubh)}(hhh](h)}(h ftrace_sizeh]h ftrace_size}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hhhhhKoubh)}(hThe chunk size in KB for ftrace front-end. It **MUST** be a multiple of 4. It's optional if you do not care about the ftrace log.h](h.The chunk size in KB for ftrace front-end. It }(hj7hhhNhNubj)}(h**MUST**h]hMUST}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubhM be a multiple of 4. It’s optional if you do not care about the ftrace log.}(hj7hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKqhj&hhubh)}(hSimilar to oops front-end, there are multiple chunks for ftrace front-end depending on the count of cpu processors. Each chunk size is equal to ftrace_size / processors_count.h]hSimilar to oops front-end, there are multiple chunks for ftrace front-end depending on the count of cpu processors. Each chunk size is equal to ftrace_size / processors_count.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthj&hhubh)}(hAll log of ftrace will be appended to the chunk. On reboot the contents are combined and available in */sys/fs/pstore/ftrace-pstore-blk-0*.h](hfAll log of ftrace will be appended to the chunk. On reboot the contents are combined and available in }(hjehhhNhNubj)}(h$*/sys/fs/pstore/ftrace-pstore-blk-0*h]h"/sys/fs/pstore/ftrace-pstore-blk-0}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubh.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKxhj&hhubh)}(h{Persistent function tracing might be useful for debugging software or hardware related hangs. Here is an example of usage::h]hzPersistent function tracing might be useful for debugging software or hardware related hangs. Here is an example of usage:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK{hj&hhubh)}(hX# mount -t pstore pstore /sys/fs/pstore # mount -t debugfs debugfs /sys/kernel/debug/ # echo 1 > /sys/kernel/debug/pstore/record_ftrace # reboot -f [...] # mount -t pstore pstore /sys/fs/pstore # tail /sys/fs/pstore/ftrace-pstore-blk-0 CPU:0 ts:5914676 c0063828 c0063b94 call_cpuidle <- cpu_startup_entry+0x1b8/0x1e0 CPU:0 ts:5914678 c039ecdc c006385c cpuidle_enter_state <- call_cpuidle+0x44/0x48 CPU:0 ts:5914680 c039e9a0 c039ecf0 cpuidle_enter_freeze <- cpuidle_enter_state+0x304/0x314 CPU:0 ts:5914681 c0063870 c039ea30 sched_idle_set_state <- cpuidle_enter_state+0x44/0x314 CPU:1 ts:5916720 c0160f59 c015ee04 kernfs_unmap_bin_file <- __kernfs_remove+0x140/0x204 CPU:1 ts:5916721 c05ca625 c015ee0c __mutex_lock_slowpath <- __kernfs_remove+0x148/0x204 CPU:1 ts:5916723 c05c813d c05ca630 yield_to <- __mutex_lock_slowpath+0x314/0x358 CPU:1 ts:5916724 c05ca2d1 c05ca638 __ww_mutex_lock <- __mutex_lock_slowpath+0x31c/0x358h]hX# mount -t pstore pstore /sys/fs/pstore # mount -t debugfs debugfs /sys/kernel/debug/ # echo 1 > /sys/kernel/debug/pstore/record_ftrace # reboot -f [...] # mount -t pstore pstore /sys/fs/pstore # tail /sys/fs/pstore/ftrace-pstore-blk-0 CPU:0 ts:5914676 c0063828 c0063b94 call_cpuidle <- cpu_startup_entry+0x1b8/0x1e0 CPU:0 ts:5914678 c039ecdc c006385c cpuidle_enter_state <- call_cpuidle+0x44/0x48 CPU:0 ts:5914680 c039e9a0 c039ecf0 cpuidle_enter_freeze <- cpuidle_enter_state+0x304/0x314 CPU:0 ts:5914681 c0063870 c039ea30 sched_idle_set_state <- cpuidle_enter_state+0x44/0x314 CPU:1 ts:5916720 c0160f59 c015ee04 kernfs_unmap_bin_file <- __kernfs_remove+0x140/0x204 CPU:1 ts:5916721 c05ca625 c015ee0c __mutex_lock_slowpath <- __kernfs_remove+0x148/0x204 CPU:1 ts:5916723 c05c813d c05ca630 yield_to <- __mutex_lock_slowpath+0x314/0x358 CPU:1 ts:5916724 c05ca2d1 c05ca638 __ww_mutex_lock <- __mutex_lock_slowpath+0x31c/0x358}hjsbah}(h]h ]h"]h$]h&]hhuh1hhhhK~hj&hhubeh}(h] ftrace-sizeah ]h"] ftrace_sizeah$]h&]uh1hhjYhhhhhKoubh)}(hhh](h)}(h max_reasonh]h max_reason}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hX Limiting which kinds of kmsg dumps are stored can be controlled via the ``max_reason`` value, as defined in include/linux/kmsg_dump.h's ``enum kmsg_dump_reason``. For example, to store both Oopses and Panics, ``max_reason`` should be set to 2 (KMSG_DUMP_OOPS), to store only Panics ``max_reason`` should be set to 1 (KMSG_DUMP_PANIC). Setting this to 0 (KMSG_DUMP_UNDEF), means the reason filtering will be controlled by the ``printk.always_kmsg_dump`` boot param: if unset, it'll be KMSG_DUMP_OOPS, otherwise KMSG_DUMP_MAX.h](hHLimiting which kinds of kmsg dumps are stored can be controlled via the }(hjhhhNhNubhliteral)}(h``max_reason``h]h max_reason}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh4 value, as defined in include/linux/kmsg_dump.h’s }(hjhhhNhNubj)}(h``enum kmsg_dump_reason``h]henum kmsg_dump_reason}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh0. For example, to store both Oopses and Panics, }(hjhhhNhNubj)}(h``max_reason``h]h max_reason}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh; should be set to 2 (KMSG_DUMP_OOPS), to store only Panics }(hjhhhNhNubj)}(h``max_reason``h]h max_reason}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh should be set to 1 (KMSG_DUMP_PANIC). Setting this to 0 (KMSG_DUMP_UNDEF), means the reason filtering will be controlled by the }(hjhhhNhNubj)}(h``printk.always_kmsg_dump``h]hprintk.always_kmsg_dump}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhJ boot param: if unset, it’ll be KMSG_DUMP_OOPS, otherwise KMSG_DUMP_MAX.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] max-reasonah ]h"] max_reasonah$]h&]uh1hhjYhhhhhKubeh}(h]configurations-for-userah ]h"]configurations for userah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hConfigurations for driverh]hConfigurations for driver}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hhhhhKubh)}(hmA device driver uses ``register_pstore_device`` with ``struct pstore_device_info`` to register to pstore/blk.h](hA device driver uses }(hjEhhhNhNubj)}(h``register_pstore_device``h]hregister_pstore_device}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh with }(hjEhhhNhNubj)}(h``struct pstore_device_info``h]hstruct pstore_device_info}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubh to register to pstore/blk.}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj4hhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single#register_pstore_device (C function)c.register_pstore_devicehNtauh1jwhj4hhhNhNubhdesc)}(hhh](hdesc_signature)}(h;int register_pstore_device (struct pstore_device_info *dev)h]hdesc_signature_line)}(h:int register_pstore_device(struct pstore_device_info *dev)h](hdesc_sig_keyword_type)}(hinth]hint}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjhhhjhKubh desc_name)}(hregister_pstore_deviceh]h desc_sig_name)}(hregister_pstore_deviceh]hregister_pstore_device}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhjhhhjhKubhdesc_parameterlist)}(h (struct pstore_device_info *dev)h]hdesc_parameter)}(hstruct pstore_device_info *devh](hdesc_sig_keyword)}(hstructh]hstruct}(hjhhhNhNubah}(h]h ]kah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpstore_device_infoh]hpstore_device_info}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetj modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j% ASTIdentifier)}j jsbc.register_pstore_deviceasbuh1hhjubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubhdesc_sig_punctuation)}(h*h]h*}(hjBhhhNhNubah}(h]h ]pah"]h$]h&]uh1j@hjubj)}(hdevh]hdev}(hjQhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1jsphinx_line_type declaratorhjhhhjhKubah}(h]jah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jhjhKhjhhubh desc_content)}(hhh]h)}(h'register non-block device to pstore/blkh]h'register non-block device to pstore/blk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jhhhj4hNhNubh container)}(h**Parameters** ``struct pstore_device_info *dev`` non-block device information **Return** * 0 - OK * Others - something error.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhjubhdefinition_list)}(hhh]hdefinition_list_item)}(h@``struct pstore_device_info *dev`` non-block device information h](hterm)}(h"``struct pstore_device_info *dev``h]j)}(hjh]hstruct pstore_device_info *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhjubh definition)}(hhh]h)}(hnon-block device informationh]hnon-block device information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhjubh bullet_list)}(hhh](j)}(h0 - OKh]h)}(hj.h]h0 - OK}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhj,ubah}(h]h ]h"]h$]h&]uh1jhj)ubj)}(hOthers - something error.h]h)}(hjFh]hOthers - something error.}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhjDubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]bulletjDuh1j'hj=hKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj4hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](j%unregister_pstore_device (C function)c.unregister_pstore_devicehNtauh1jwhj4hhhNhNubj)}(hhh](j)}(h>void unregister_pstore_device (struct pstore_device_info *dev)h]j)}(h=void unregister_pstore_device(struct pstore_device_info *dev)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hunregister_pstore_deviceh]j)}(hunregister_pstore_deviceh]hunregister_pstore_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubj)}(h (struct pstore_device_info *dev)h]j)}(hstruct pstore_device_info *devh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(hpstore_device_infoh]hpstore_device_info}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj$j')}j*]j-)}j jsbc.unregister_pstore_deviceasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjA)}(hjDh]h*}(hj hhhNhNubah}(h]h ]jMah"]h$]h&]uh1j@hjubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthj{hhhjhKubah}(h]jvah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjhKhjxhhubj)}(hhh]h)}(h+unregister non-block device from pstore/blkh]h+unregister non-block device from pstore/blk}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhj@hhubah}(h]h ]h"]h$]h&]uh1jhjxhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj[jj[jjjuh1jhhhj4hNhNubj)}(hQ**Parameters** ``struct pstore_device_info *dev`` non-block device informationh](h)}(h**Parameters**h]j)}(hjeh]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhj_ubj)}(hhh]j)}(h?``struct pstore_device_info *dev`` non-block device informationh](j)}(h"``struct pstore_device_info *dev``h]j)}(hjh]hstruct pstore_device_info *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhj~ubj)}(hhh]h)}(hnon-block device informationh]hnon-block device information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:160: ./fs/pstore/blk.chKhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj4hhhNhNubeh}(h]configurations-for-driverah ]h"]configurations for driverah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hCompression and headerh]hCompression and header}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hBlock device is large enough for uncompressed oops data. Actually we do not recommend data compression because pstore/blk will insert some information into the first line of oops/panic data. For example::h]hBlock device is large enough for uncompressed oops data. Actually we do not recommend data compression because pstore/blk will insert some information into the first line of oops/panic data. For example:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hPanic: Total 16 timesh]hPanic: Total 16 times}hjsbah}(h]h ]h"]h$]h&]hhuh1hhhhKhjhhubh)}(hIt means that it's OOPS|Panic for the 16th time since the first booting. Sometimes the number of occurrences of oops|panic since the first booting is important to judge whether the system is stable.h]hIt means that it’s OOPS|Panic for the 16th time since the first booting. Sometimes the number of occurrences of oops|panic since the first booting is important to judge whether the system is stable.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hBThe following line is inserted by pstore filesystem. For example::h]hAThe following line is inserted by pstore filesystem. For example:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h Oops#2 Part1h]h Oops#2 Part1}hj sbah}(h]h ]h"]h$]h&]hhuh1hhhhKhjhhubh)}(h:It means that it's OOPS for the 2nd time on the last boot.h]hdata** ``should_recover`` whether this zone should recover from storage ``dirty`` whether the data in **buffer** dirtyh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKDhjubh)}(hstruct pstore_zone { loff_t off; const char *name; enum pstore_type_id type; struct psz_buffer *buffer; struct psz_buffer *oldbuf; size_t buffer_size; bool should_recover; atomic_t dirty; };h]hstruct pstore_zone { loff_t off; const char *name; enum pstore_type_id type; struct psz_buffer *buffer; struct psz_buffer *oldbuf; size_t buffer_size; bool should_recover; atomic_t dirty; };}hjsbah}(h]h ]h"]h$]h&]hhuh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKFhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKQhjubj)}(hhh](j)}(h``off`` zone offset of storage h](j)}(h``off``h]j)}(hjh]hoff}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKChjubj)}(hhh]h)}(hzone offset of storageh]hzone offset of storage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKChjubj)}(h&``name`` front-end name for this zone h](j)}(h``name``h]j)}(hjh]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKEhj ubj)}(hhh]h)}(hfront-end name for this zoneh]hfront-end name for this zone}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hKEhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj(hKEhjubj)}(h&``type`` front-end type for this zone h](j)}(h``type``h]j)}(hjLh]htype}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKDhjFubj)}(hhh]h)}(hfront-end type for this zoneh]hfront-end type for this zone}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahKDhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjahKDhjubj)}(h7``buffer`` pointer to data buffer managed by this zone h](j)}(h ``buffer``h]j)}(hjh]hbuffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKFhjubj)}(hhh]h)}(h+pointer to data buffer managed by this zoneh]h+pointer to data buffer managed by this zone}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKFhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKFhjubj)}(h&``oldbuf`` pointer to old data buffer h](j)}(h ``oldbuf``h]j)}(hjh]holdbuf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKGhjubj)}(hhh]h)}(hpointer to old data bufferh]hpointer to old data buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKGhjubj)}(h*``buffer_size`` bytes in **buffer->data** h](j)}(h``buffer_size``h]j)}(hjh]h buffer_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKHhjubj)}(hhh]h)}(hbytes in **buffer->data**h](h bytes in }(hjhhhNhNubj)}(h**buffer->data**h]h buffer->data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhj hKHhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKHhjubj)}(hA``should_recover`` whether this zone should recover from storage h](j)}(h``should_recover``h]j)}(hj>h]hshould_recover}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKIhj8ubj)}(hhh]h)}(h-whether this zone should recover from storageh]h-whether this zone should recover from storage}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShKIhjTubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhjShKIhjubj)}(h.``dirty`` whether the data in **buffer** dirtyh](j)}(h ``dirty``h]j)}(hjwh]hdirty}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKIhjqubj)}(hhh]h)}(h$whether the data in **buffer** dirtyh](hwhether the data in }(hjhhhNhNubj)}(h **buffer**h]hbuffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh dirty}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKJhjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjhKIhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKMhj hhubh)}(hzone structure in memory.h]hzone structure in memory.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKJhj hhubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](jpsz_context (C struct) c.psz_contexthNtauh1jwhj hhhNhNubj)}(hhh](j)}(h psz_contexth]j)}(hstruct psz_contexth](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKOubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKOubj)}(h psz_contexth]j)}(hjh]h psz_context}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKOubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthjhhhjhKOubah}(h]jah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjhKOhjhhubj)}(hhh]h)}(h&all about running state of pstore/zoneh]h&all about running state of pstore/zone}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKZhjIhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKOubeh}(h]h ](jstructeh"]h$]h&]jjjjdjjdjjjuh1jhhhj hNhNubj)}(hX**Definition**:: struct psz_context { struct pstore_zone **kpszs; struct pstore_zone *ppsz; struct pstore_zone *cpsz; struct pstore_zone **fpszs; unsigned int kmsg_max_cnt; unsigned int kmsg_read_cnt; unsigned int kmsg_write_cnt; unsigned int pmsg_read_cnt; unsigned int console_read_cnt; unsigned int ftrace_max_cnt; unsigned int ftrace_read_cnt; unsigned int oops_counter; unsigned int panic_counter; atomic_t recovered; atomic_t on_panic; struct mutex pstore_zone_info_lock; struct pstore_zone_info *pstore_zone_info; struct pstore_info pstore; }; **Members** ``kpszs`` kmsg dump storage zones ``ppsz`` pmsg storage zone ``cpsz`` console storage zone ``fpszs`` ftrace storage zones ``kmsg_max_cnt`` max count of **kpszs** ``kmsg_read_cnt`` counter of total read kmsg dumps ``kmsg_write_cnt`` counter of total kmsg dump writes ``pmsg_read_cnt`` counter of total read pmsg zone ``console_read_cnt`` counter of total read console zone ``ftrace_max_cnt`` max count of **fpszs** ``ftrace_read_cnt`` counter of max read ftrace zone ``oops_counter`` counter of oops dumps ``panic_counter`` counter of panic dumps ``recovered`` whether finished recovering data from storage ``on_panic`` whether panic is happening ``pstore_zone_info_lock`` lock to **pstore_zone_info** ``pstore_zone_info`` information from backend ``pstore`` structure for pstoreh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubh:}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chK^hjhubh)}(hX]struct psz_context { struct pstore_zone **kpszs; struct pstore_zone *ppsz; struct pstore_zone *cpsz; struct pstore_zone **fpszs; unsigned int kmsg_max_cnt; unsigned int kmsg_read_cnt; unsigned int kmsg_write_cnt; unsigned int pmsg_read_cnt; unsigned int console_read_cnt; unsigned int ftrace_max_cnt; unsigned int ftrace_read_cnt; unsigned int oops_counter; unsigned int panic_counter; atomic_t recovered; atomic_t on_panic; struct mutex pstore_zone_info_lock; struct pstore_zone_info *pstore_zone_info; struct pstore_info pstore; };h]hX]struct psz_context { struct pstore_zone **kpszs; struct pstore_zone *ppsz; struct pstore_zone *cpsz; struct pstore_zone **fpszs; unsigned int kmsg_max_cnt; unsigned int kmsg_read_cnt; unsigned int kmsg_write_cnt; unsigned int pmsg_read_cnt; unsigned int console_read_cnt; unsigned int ftrace_max_cnt; unsigned int ftrace_read_cnt; unsigned int oops_counter; unsigned int panic_counter; atomic_t recovered; atomic_t on_panic; struct mutex pstore_zone_info_lock; struct pstore_zone_info *pstore_zone_info; struct pstore_info pstore; };}hjsbah}(h]h ]h"]h$]h&]hhuh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chK`hjhubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKuhjhubj)}(hhh](j)}(h"``kpszs`` kmsg dump storage zones h](j)}(h ``kpszs``h]j)}(hjh]hkpszs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chK]hjubj)}(hhh]h)}(hkmsg dump storage zonesh]hkmsg dump storage zones}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK]hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK]hjubj)}(h``ppsz`` pmsg storage zone h](j)}(h``ppsz``h]j)}(hjh]hppsz}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chK^hjubj)}(hhh]h)}(hpmsg storage zoneh]hpmsg storage zone}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK^hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK^hjubj)}(h``cpsz`` console storage zone h](j)}(h``cpsz``h]j)}(hj+h]hcpsz}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chK_hj%ubj)}(hhh]h)}(hconsole storage zoneh]hconsole storage zone}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hK_hjAubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj@hK_hjubj)}(h``fpszs`` ftrace storage zones h](j)}(h ``fpszs``h]j)}(hjdh]hfpszs}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chK`hj^ubj)}(hhh]h)}(hftrace storage zonesh]hftrace storage zones}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhK`hjzubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhK`hjubj)}(h(``kmsg_max_cnt`` max count of **kpszs** h](j)}(h``kmsg_max_cnt``h]j)}(hjh]h kmsg_max_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKahjubj)}(hhh]h)}(hmax count of **kpszs**h](h max count of }(hjhhhNhNubj)}(h **kpszs**h]hkpszs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKahjubj)}(h3``kmsg_read_cnt`` counter of total read kmsg dumps h](j)}(h``kmsg_read_cnt``h]j)}(hjh]h kmsg_read_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKbhjubj)}(hhh]h)}(h counter of total read kmsg dumpsh]h counter of total read kmsg dumps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKbhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKbhjubj)}(h5``kmsg_write_cnt`` counter of total kmsg dump writes h](j)}(h``kmsg_write_cnt``h]j)}(hjh]hkmsg_write_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKchjubj)}(hhh]h)}(h!counter of total kmsg dump writesh]h!counter of total kmsg dump writes}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKchj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj2hKchjubj)}(h2``pmsg_read_cnt`` counter of total read pmsg zone h](j)}(h``pmsg_read_cnt``h]j)}(hjVh]h pmsg_read_cnt}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKdhjPubj)}(hhh]h)}(hcounter of total read pmsg zoneh]hcounter of total read pmsg zone}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhKdhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKdhjubj)}(h8``console_read_cnt`` counter of total read console zone h](j)}(h``console_read_cnt``h]j)}(hjh]hconsole_read_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKehjubj)}(hhh]h)}(h"counter of total read console zoneh]h"counter of total read console zone}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKehjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKehjubj)}(h*``ftrace_max_cnt`` max count of **fpszs** h](j)}(h``ftrace_max_cnt``h]j)}(hjh]hftrace_max_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKfhjubj)}(hhh]h)}(hmax count of **fpszs**h](h max count of }(hjhhhNhNubj)}(h **fpszs**h]hfpszs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKfhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKfhjubj)}(h4``ftrace_read_cnt`` counter of max read ftrace zone h](j)}(h``ftrace_read_cnt``h]j)}(hjh]hftrace_read_cnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKghj ubj)}(hhh]h)}(hcounter of max read ftrace zoneh]hcounter of max read ftrace zone}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKghj%ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj$hKghjubj)}(h'``oops_counter`` counter of oops dumps h](j)}(h``oops_counter``h]j)}(hjHh]h oops_counter}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhhjBubj)}(hhh]h)}(hcounter of oops dumpsh]hcounter of oops dumps}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKhhj^ubah}(h]h ]h"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]uh1jhj]hKhhjubj)}(h)``panic_counter`` counter of panic dumps h](j)}(h``panic_counter``h]j)}(hjh]h panic_counter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKihj{ubj)}(hhh]h)}(hcounter of panic dumpsh]hcounter of panic dumps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKihjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjhKihjubj)}(h<``recovered`` whether finished recovering data from storage h](j)}(h ``recovered``h]j)}(hjh]h recovered}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKjhjubj)}(hhh]h)}(h-whether finished recovering data from storageh]h-whether finished recovering data from storage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKjhjubj)}(h(``on_panic`` whether panic is happening h](j)}(h ``on_panic``h]j)}(hjh]hon_panic}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKkhjubj)}(hhh]h)}(hwhether panic is happeningh]hwhether panic is happening}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKkhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKkhjubj)}(h7``pstore_zone_info_lock`` lock to **pstore_zone_info** h](j)}(h``pstore_zone_info_lock``h]j)}(hj,h]hpstore_zone_info_lock}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKlhj&ubj)}(hhh]h)}(hlock to **pstore_zone_info**h](hlock to }(hjEhhhNhNubj)}(h**pstore_zone_info**h]hpstore_zone_info}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]uh1hhjAhKlhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKlhjubj)}(h.``pstore_zone_info`` information from backend h](j)}(h``pstore_zone_info``h]j)}(hjsh]hpstore_zone_info}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKmhjmubj)}(hhh]h)}(hinformation from backendh]hinformation from backend}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKmhjubah}(h]h ]h"]h$]h&]uh1jhjmubeh}(h]h ]h"]h$]h&]uh1jhjhKmhjubj)}(h``pstore`` structure for pstoreh](j)}(h ``pstore``h]j)}(hjh]hpstore}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKmhjubj)}(hhh]h)}(hstructure for pstoreh]hstructure for pstore}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKnhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKmhjubeh}(h]h ]h"]h$]h&]uh1jhjhubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](jpsz_flush_mode (C enum)c.psz_flush_modehNtauh1jwhj hhhNhNubj)}(hhh](j)}(hpsz_flush_modeh]j)}(henum psz_flush_modeh](j)}(henumh]henum}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKtubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKtubj)}(hpsz_flush_modeh]j)}(hjh]hpsz_flush_mode}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKtubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthjhhhjhKtubah}(h]jah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjhKthjhhubj)}(hhh]h)}(hflush mode for psz_zone_write()h]hflush mode for psz_zone_write()}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhjFhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKtubeh}(h]h ](jenumeh"]h$]h&]jjjjajjajjjuh1jhhhj hNhNubj)}(h**Constants** ``FLUSH_NONE`` do not flush to storage but update data on memory ``FLUSH_PART`` just flush part of data including meta data to storage ``FLUSH_META`` just flush meta data of zone to storage ``FLUSH_ALL`` flush all of zoneh](h)}(h **Constants**h]j)}(hjkh]h Constants}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhjeubj)}(hhh](j)}(hA``FLUSH_NONE`` do not flush to storage but update data on memory h](j)}(h``FLUSH_NONE``h]j)}(hjh]h FLUSH_NONE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhjubj)}(hhh]h)}(h1do not flush to storage but update data on memoryh]h1do not flush to storage but update data on memory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hF``FLUSH_PART`` just flush part of data including meta data to storage h](j)}(h``FLUSH_PART``h]j)}(hjh]h FLUSH_PART}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhjubj)}(hhh]h)}(h6just flush part of data including meta data to storageh]h6just flush part of data including meta data to storage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h7``FLUSH_META`` just flush meta data of zone to storage h](j)}(h``FLUSH_META``h]j)}(hjh]h FLUSH_META}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhjubj)}(hhh]h)}(h'just flush meta data of zone to storageh]h'just flush meta data of zone to storage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``FLUSH_ALL`` flush all of zoneh](j)}(h ``FLUSH_ALL``h]j)}(hj5h]h FLUSH_ALL}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhj/ubj)}(hhh]h)}(hflush all of zoneh]hflush all of zone}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chKhjKubah}(h]h ]h"]h$]h&]uh1jhj/ubeh}(h]h ]h"]h$]h&]uh1jhjJhKhjubeh}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](jpsz_recovery (C function)c.psz_recoveryhNtauh1jwhj hhhNhNubj)}(hhh](j)}(h*int psz_recovery (struct psz_context *cxt)h]j)}(h)int psz_recovery(struct psz_context *cxt)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMRubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMRubj)}(h psz_recoveryh]j)}(h psz_recoveryh]h psz_recovery}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhMRubj)}(h(struct psz_context *cxt)h]j)}(hstruct psz_context *cxth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h psz_contexth]h psz_context}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetjmodnameN classnameNj$j')}j*]j-)}j jsbc.psz_recoveryasbuh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjA)}(hjDh]h*}(hjhhhNhNubah}(h]h ]jMah"]h$]h&]uh1j@hjubj)}(hcxth]hcxt}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMRubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthjhhhjhMRubah}(h]jah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjhMRhjhhubj)}(hhh]h)}(hrecover data from storageh]hrecover data from storage}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMRhjLhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMRubeh}(h]h ](jfunctioneh"]h$]h&]jjjjgjjgjjjuh1jhhhj hNhNubj)}(h**Parameters** ``struct psz_context *cxt`` the context of pstore/zone **Description** recovery means reading data back from storage after rebooting **Return** 0 on success, others on failure.h](h)}(h**Parameters**h]j)}(hjqh]h Parameters}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMVhjkubj)}(hhh]j)}(h7``struct psz_context *cxt`` the context of pstore/zone h](j)}(h``struct psz_context *cxt``h]j)}(hjh]hstruct psz_context *cxt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMShjubj)}(hhh]h)}(hthe context of pstore/zoneh]hthe context of pstore/zone}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMShjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMShjubah}(h]h ]h"]h$]h&]uh1jhjkubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMUhjkubh)}(h=recovery means reading data back from storage after rebootingh]h=recovery means reading data back from storage after rebooting}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMThjkubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMVhjkubh)}(h 0 on success, others on failure.h]h 0 on success, others on failure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhX/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:227: ./fs/pstore/zone.chMWhjkubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](jpstore_zone_info (C struct)c.pstore_zone_infohNtauh1jwhj hhhNhNubj)}(hhh](j)}(hpstore_zone_infoh]j)}(hstruct pstore_zone_infoh](j)}(hjh]hstruct}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3hhhjDhKubj)}(hpstore_zone_infoh]j)}(hj1h]hpstore_zone_info}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubah}(h]h ](jjeh"]h$]h&]hhuh1jhj3hhhjDhKubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthj/hhhjDhKubah}(h]j*ah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjDhKhj,hhubj)}(hhh]h)}(h%pstore/zone back-end driver structureh]h%pstore/zone back-end driver structure}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhK hjvhhubah}(h]h ]h"]h$]h&]uh1jhj,hhhjDhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhj hNhNubj)}(hX**Definition**:: struct pstore_zone_info { struct module *owner; const char *name; unsigned long total_size; unsigned long kmsg_size; int max_reason; unsigned long pmsg_size; unsigned long console_size; unsigned long ftrace_size; pstore_zone_read_op read; pstore_zone_write_op write; pstore_zone_erase_op erase; pstore_zone_write_op panic_write; }; **Members** ``owner`` Module which is responsible for this back-end driver. ``name`` Name of the back-end driver. ``total_size`` The total size in bytes pstore/zone can use. It must be greater than 4096 and be multiple of 4096. ``kmsg_size`` The size of oops/panic zone. Zero means disabled, otherwise, it must be multiple of SECTOR_SIZE(512 Bytes). ``max_reason`` Maximum kmsg dump reason to store. ``pmsg_size`` The size of pmsg zone which is the same as **kmsg_size**. ``console_size`` The size of console zone which is the same as **kmsg_size**. ``ftrace_size`` The size of ftrace zone which is the same as **kmsg_size**. ``read`` The general read operation. Both of the function parameters **size** and **offset** are relative value to storage. On success, the number of bytes should be returned, others mean error. ``write`` The same as **read**, but the following error number: -EBUSY means try to write again later. -ENOMSG means to try next zone. ``erase`` The general erase operation for device with special removing job. Both of the function parameters **size** and **offset** are relative value to storage. Return 0 on success and others on failure. ``panic_write`` The write operation only used for panic case. It's optional if you do not care panic log. The parameters are relative value to storage. On success, the number of bytes should be returned, others excluding -ENOMSG mean error. -ENOMSG means to try next zone.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubh)}(hX{struct pstore_zone_info { struct module *owner; const char *name; unsigned long total_size; unsigned long kmsg_size; int max_reason; unsigned long pmsg_size; unsigned long console_size; unsigned long ftrace_size; pstore_zone_read_op read; pstore_zone_write_op write; pstore_zone_erase_op erase; pstore_zone_write_op panic_write; };h]hX{struct pstore_zone_info { struct module *owner; const char *name; unsigned long total_size; unsigned long kmsg_size; int max_reason; unsigned long pmsg_size; unsigned long console_size; unsigned long ftrace_size; pstore_zone_read_op read; pstore_zone_write_op write; pstore_zone_erase_op erase; pstore_zone_write_op panic_write; };}hjsbah}(h]h ]h"]h$]h&]hhuh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhK!hjubj)}(hhh](j)}(h@``owner`` Module which is responsible for this back-end driver. h](j)}(h ``owner``h]j)}(hjh]howner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubj)}(hhh]h)}(h5Module which is responsible for this back-end driver.h]h5Module which is responsible for this back-end driver.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h&``name`` Name of the back-end driver. h](j)}(h``name``h]j)}(hjh]hname}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubj)}(hhh]h)}(hName of the back-end driver.h]hName of the back-end driver.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hKhjubj)}(hr``total_size`` The total size in bytes pstore/zone can use. It must be greater than 4096 and be multiple of 4096. h](j)}(h``total_size``h]j)}(hjXh]h total_size}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjRubj)}(hhh]h)}(hbThe total size in bytes pstore/zone can use. It must be greater than 4096 and be multiple of 4096.h]hbThe total size in bytes pstore/zone can use. It must be greater than 4096 and be multiple of 4096.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhKhjubj)}(hz``kmsg_size`` The size of oops/panic zone. Zero means disabled, otherwise, it must be multiple of SECTOR_SIZE(512 Bytes). h](j)}(h ``kmsg_size``h]j)}(hjh]h kmsg_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubj)}(hhh]h)}(hkThe size of oops/panic zone. Zero means disabled, otherwise, it must be multiple of SECTOR_SIZE(512 Bytes).h]hkThe size of oops/panic zone. Zero means disabled, otherwise, it must be multiple of SECTOR_SIZE(512 Bytes).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h2``max_reason`` Maximum kmsg dump reason to store. h](j)}(h``max_reason``h]j)}(hjh]h max_reason}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubj)}(hhh]h)}(h"Maximum kmsg dump reason to store.h]h"Maximum kmsg dump reason to store.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hH``pmsg_size`` The size of pmsg zone which is the same as **kmsg_size**. h](j)}(h ``pmsg_size``h]j)}(hjh]h pmsg_size}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjubj)}(hhh]h)}(h9The size of pmsg zone which is the same as **kmsg_size**.h](h+The size of pmsg zone which is the same as }(hjhhhNhNubj)}(h **kmsg_size**h]h kmsg_size}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hN``console_size`` The size of console zone which is the same as **kmsg_size**. h](j)}(h``console_size``h]j)}(hjPh]h console_size}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjJubj)}(hhh]h)}(hubj)}(hhh]h)}(h|The same as **read**, but the following error number: -EBUSY means try to write again later. -ENOMSG means to try next zone.h](h The same as }(hj]hhhNhNubj)}(h**read**h]hread}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubhh, but the following error number: -EBUSY means try to write again later. -ENOMSG means to try next zone.}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhKhjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhjYhKhjubj)}(h``erase`` The general erase operation for device with special removing job. Both of the function parameters **size** and **offset** are relative value to storage. Return 0 on success and others on failure. h](j)}(h ``erase``h]j)}(hjh]herase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhK#hjubj)}(hhh]h)}(hThe general erase operation for device with special removing job. Both of the function parameters **size** and **offset** are relative value to storage. Return 0 on success and others on failure.h](hbThe general erase operation for device with special removing job. Both of the function parameters }(hjhhhNhNubj)}(h**size**h]hsize}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h **offset**h]hoffset}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhJ are relative value to storage. Return 0 on success and others on failure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhK hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK#hjubj)}(hX``panic_write`` The write operation only used for panic case. It's optional if you do not care panic log. The parameters are relative value to storage. On success, the number of bytes should be returned, others excluding -ENOMSG mean error. -ENOMSG means to try next zone.h](j)}(h``panic_write``h]j)}(hjh]h panic_write}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhK'hjubj)}(hhh]h)}(hXThe write operation only used for panic case. It's optional if you do not care panic log. The parameters are relative value to storage. On success, the number of bytes should be returned, others excluding -ENOMSG mean error. -ENOMSG means to try next zone.h]hXThe write operation only used for panic case. It’s optional if you do not care panic log. The parameters are relative value to storage. On success, the number of bytes should be returned, others excluding -ENOMSG mean error. -ENOMSG means to try next zone.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:230: ./include/linux/pstore_zone.hhK$hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK'hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](jpstore_device_info (C struct)c.pstore_device_infohNtauh1jwhj hhhNhNubj)}(hhh](j)}(hpstore_device_infoh]j)}(hstruct pstore_device_infoh](j)}(hjh]hstruct}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKubj)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhjUhKubj)}(hpstore_device_infoh]j)}(hjBh]hpstore_device_info}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjdubah}(h]h ](jjeh"]h$]h&]hhuh1jhjDhhhjUhKubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthj@hhhjUhKubah}(h]j;ah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjUhKhj=hhubj)}(hhh]h)}(h%back-end pstore/blk driver structure.h]h%back-end pstore/blk driver structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK hjhhubah}(h]h ]h"]h$]h&]uh1jhj=hhhjUhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhj hNhNubj)}(hX\**Definition**:: struct pstore_device_info { unsigned int flags; struct pstore_zone_info zone; }; **Members** ``flags`` Refer to macro starting with PSTORE_FLAGS defined in linux/pstore.h. It means what front-ends this device support. Zero means all backends for compatible. ``zone`` The struct pstore_zone_info details.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhjubh)}(hXstruct pstore_device_info { unsigned int flags; struct pstore_zone_info zone; };h]hXstruct pstore_device_info { unsigned int flags; struct pstore_zone_info zone; };}hjsbah}(h]h ]h"]h$]h&]hhuh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhjubj)}(hhh](j)}(h``flags`` Refer to macro starting with PSTORE_FLAGS defined in linux/pstore.h. It means what front-ends this device support. Zero means all backends for compatible. h](j)}(h ``flags``h]j)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhjubj)}(hhh]h)}(hRefer to macro starting with PSTORE_FLAGS defined in linux/pstore.h. It means what front-ends this device support. Zero means all backends for compatible.h]hRefer to macro starting with PSTORE_FLAGS defined in linux/pstore.h. It means what front-ends this device support. Zero means all backends for compatible.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubj)}(h-``zone`` The struct pstore_zone_info details.h](j)}(h``zone``h]j)}(hj1h]hzone}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhj+ubj)}(hhh]h)}(h$The struct pstore_zone_info details.h]h$The struct pstore_zone_info details.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](jpstore_blk_config (C struct)c.pstore_blk_confighNtauh1jwhj hhhNhNubj)}(hhh](j)}(hpstore_blk_configh]j)}(hstruct pstore_blk_configh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hpstore_blk_configh]j)}(hjh]hpstore_blk_config}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthjhhhjhKubah}(h]j~ah ](jxjyeh"]h$]h&]j}j~)jhuh1jhjhKhjhhubj)}(hhh]h)}(h$the pstore_blk backend configurationh]h$the pstore_blk backend configuration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1jhhhj hNhNubj)}(hXV**Definition**:: struct pstore_blk_config { char device[80]; enum kmsg_dump_reason max_reason; unsigned long kmsg_size; unsigned long pmsg_size; unsigned long console_size; unsigned long ftrace_size; }; **Members** ``device`` Name of the desired block device ``max_reason`` Maximum kmsg dump reason to store to block device ``kmsg_size`` Total size of for kmsg dumps ``pmsg_size`` Total size of the pmsg storage area ``console_size`` Total size of the console storage area ``ftrace_size`` Total size for ftrace logging data (for all CPUs)h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK hjubh)}(hstruct pstore_blk_config { char device[80]; enum kmsg_dump_reason max_reason; unsigned long kmsg_size; unsigned long pmsg_size; unsigned long console_size; unsigned long ftrace_size; };h]hstruct pstore_blk_config { char device[80]; enum kmsg_dump_reason max_reason; unsigned long kmsg_size; unsigned long pmsg_size; unsigned long console_size; unsigned long ftrace_size; };}hj sbah}(h]h ]h"]h$]h&]hhuh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK"hjubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK+hjubj)}(hhh](j)}(h,``device`` Name of the desired block device h](j)}(h ``device``h]j)}(hj: h]hdevice}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8 ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhKhj4 ubj)}(hhh]h)}(h Name of the desired block deviceh]h Name of the desired block device}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO hKhjP ubah}(h]h ]h"]h$]h&]uh1jhj4 ubeh}(h]h ]h"]h$]h&]uh1jhjO hKhj1 ubj)}(hA``max_reason`` Maximum kmsg dump reason to store to block device h](j)}(h``max_reason``h]j)}(hjs h]h max_reason}(hju hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK hjm ubj)}(hhh]h)}(h1Maximum kmsg dump reason to store to block deviceh]h1Maximum kmsg dump reason to store to block device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK hj ubah}(h]h ]h"]h$]h&]uh1jhjm ubeh}(h]h ]h"]h$]h&]uh1jhj hK hj1 ubj)}(h+``kmsg_size`` Total size of for kmsg dumps h](j)}(h ``kmsg_size``h]j)}(hj h]h kmsg_size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK!hj ubj)}(hhh]h)}(hTotal size of for kmsg dumpsh]hTotal size of for kmsg dumps}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK!hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK!hj1 ubj)}(h2``pmsg_size`` Total size of the pmsg storage area h](j)}(h ``pmsg_size``h]j)}(hj h]h pmsg_size}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK"hj ubj)}(hhh]h)}(h#Total size of the pmsg storage areah]h#Total size of the pmsg storage area}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK"hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hK"hj1 ubj)}(h8``console_size`` Total size of the console storage area h](j)}(h``console_size``h]j)}(hj!h]h console_size}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK#hj!ubj)}(hhh]h)}(h&Total size of the console storage areah]h&Total size of the console storage area}(hj7!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3!hK#hj4!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj3!hK#hj1 ubj)}(hA``ftrace_size`` Total size for ftrace logging data (for all CPUs)h](j)}(h``ftrace_size``h]j)}(hjW!h]h ftrace_size}(hjY!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjU!ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK#hjQ!ubj)}(hhh]h)}(h1Total size for ftrace logging data (for all CPUs)h]h1Total size for ftrace logging data (for all CPUs)}(hjp!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK$hjm!ubah}(h]h ]h"]h$]h&]uh1jhjQ!ubeh}(h]h ]h"]h$]h&]uh1jhjl!hK#hj1 ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubjx)}(hhh]h}(h]h ]h"]h$]h&]entries](j"pstore_blk_get_config (C function)c.pstore_blk_get_confighNtauh1jwhj hhhNhNubj)}(hhh](j)}(h:int pstore_blk_get_config (struct pstore_blk_config *info)h]j)}(h9int pstore_blk_get_config(struct pstore_blk_config *info)h](j)}(hinth]hint}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK/ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj!hK/ubj)}(hpstore_blk_get_configh]j)}(hpstore_blk_get_configh]hpstore_blk_get_config}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ](jjeh"]h$]h&]hhuh1jhj!hhhj!hK/ubj)}(h (struct pstore_blk_config *info)h]j)}(hstruct pstore_blk_config *infoh](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hhh]j)}(hpstore_blk_configh]hpstore_blk_config}(hj "hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj "ubah}(h]h ]h"]h$]h&] refdomainjreftypej  reftargetj"modnameN classnameNj$j')}j*]j-)}j j!sbc.pstore_blk_get_configasbuh1hhj!ubj)}(h h]h }(hj,"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubjA)}(hjDh]h*}(hj:"hhhNhNubah}(h]h ]jMah"]h$]h&]uh1j@hj!ubj)}(hinfoh]hinfo}(hjG"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubah}(h]h ]h"]h$]h&]hhuh1jhj!hhhj!hK/ubeh}(h]h ]h"]h$]h&]hhjruh1jjsjthj!hhhj!hK/ubah}(h]j!ah ](jxjyeh"]h$]h&]j}j~)jhuh1jhj!hK/hj!hhubj)}(hhh]h)}(h2get a copy of the pstore_blk backend configurationh]h2get a copy of the pstore_blk backend configuration}(hjq"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK/hjn"hhubah}(h]h ]h"]h$]h&]uh1jhj!hhhj!hK/ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"jj"jjjuh1jhhhj hNhNubj)}(h**Parameters** ``struct pstore_blk_config *info`` The sturct pstore_blk_config to be filled in **Description** Failure returns negative error code, and success returns 0.h](h)}(h**Parameters**h]j)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK3hj"ubj)}(hhh]j)}(hP``struct pstore_blk_config *info`` The sturct pstore_blk_config to be filled in h](j)}(h"``struct pstore_blk_config *info``h]j)}(hj"h]hstruct pstore_blk_config *info}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK1hj"ubj)}(hhh]h)}(h,The sturct pstore_blk_config to be filled inh]h,The sturct pstore_blk_config to be filled in}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hK1hj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hK1hj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubh)}(h**Description**h]j)}(hj"h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK3hj"ubh)}(h;Failure returns negative error code, and success returns 0.h]h;Failure returns negative error code, and success returns 0.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhb/var/lib/git/docbuild/linux/Documentation/admin-guide/pstore-blk:233: ./include/linux/pstore_blk.hhK2hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj hhhNhNubeh}(h]pstore-block-internalsah ]h"]pstore block internalsah$]h&]uh1hhhhhhhhKubeh}(h]pstore-block-oops-panic-loggerah ]h"]pstore block oops/panic loggerah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjL#error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j&#j##jjjVjSj1j.jjjAj>jjj#j jjj)j&jjj7 j4 j j j j j#j#u nametypes}(j&#jjVj1jjAjj#jj)jj7 j j j#uh}(j##hjhjSjj.jYjjj>jjjDj jjj&j&jjj4jjjvj{j4 jj j: j j j#j j j j j jj#jjjjjjj*j/j;j@j~jj!j!u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.