lkml.org 
[lkml]   [2019]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFC v5 2/4] pstore/blk: add sample for pstore_blk
    From
    Date
    On 2019-01-18 08:15, Kees Cook wrote:
    > On Mon, Jan 7, 2019 at 4:01 AM liaoweixiong
    > <liaoweixiong@allwinnertech.com> wrote:
    >>
    >> It is a sample for pstore_blk, using general ram rather than block device.
    >> According to pstore_blk, the data will be saved to ram buffer if not
    >> register device path and apis for panic. So, it can only used to dump
    >> Oops and some things will not reboot.
    >
    > I'm not sure I see the purpose of this implementation? Doesn't this
    > just cause all the pstore machinery to skip any actions?

    It just a sample for pstore_blk, which can used to record OOPS log on
    ram buffer. This module make it easier for device, without panic apis,
    to record oops log only.

    > i.e. without bzinfo->part_path, won't blkz_sample_write() just return
    -EINVAL, etc?

    Sure, blkz_sample_write (named blkz_default_general_write now) just
    return -EINVAL without bzinfo->part_path. How is the write path? It is
    blkoops_pstore_write->blkz_dmesg_write->blkz_zone_write->blkz_default_general_write.
    The blkz_zone_write will save the log to ram buffer even
    blkz_default_general_write return failure.

    >>
    >> Signed-off-by: liaoweixiong <liaoweixiong@allwinnertech.com>
    >> ---
    >> fs/pstore/Kconfig | 9 +++++++++
    >> fs/pstore/Makefile | 2 ++
    >> fs/pstore/blkbuf.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
    >> 3 files changed, 57 insertions(+)
    >> create mode 100644 fs/pstore/blkbuf.c
    >>
    >> diff --git a/fs/pstore/Kconfig b/fs/pstore/Kconfig
    >> index a881c53..18b1fe6 100644
    >> --- a/fs/pstore/Kconfig
    >> +++ b/fs/pstore/Kconfig
    >> @@ -159,3 +159,12 @@ config PSTORE_BLK
    >> help
    >> This enables panic and oops message to be logged to a block dev
    >> where it can be read back at some later point.
    >> +
    >> +config PSTORE_BLKBUF
    >> + tristate "pstore block buffer sample"
    >> + depends on PSTORE_BLK
    >> + help
    >> + This is a sample for pstore block, but do NOT have a block dev.
    >> + According to pstore_blk, the data will be saved to ram buffer and
    >> + dropped when reboot. So, it can only used to dump Oops and some
    >> + things will not reboot.
    >> diff --git a/fs/pstore/Makefile b/fs/pstore/Makefile
    >> index c431700..4a6cde1 100644
    >> --- a/fs/pstore/Makefile
    >> +++ b/fs/pstore/Makefile
    >> @@ -15,3 +15,5 @@ obj-$(CONFIG_PSTORE_RAM) += ramoops.o
    >>
    >> obj-$(CONFIG_PSTORE_BLK) += pstore_blk.o
    >> pstore_blk-y += blkzone.o
    >> +
    >> +obj-$(CONFIG_PSTORE_BLKBUF) += blkbuf.o
    >> diff --git a/fs/pstore/blkbuf.c b/fs/pstore/blkbuf.c
    >> new file mode 100644
    >> index 0000000..f1c6f57
    >> --- /dev/null
    >> +++ b/fs/pstore/blkbuf.c
    >> @@ -0,0 +1,46 @@
    >> +// SPDX-License-Identifier: GPL-2.0
    >> +/*
    >> + *
    >> + * blkbuf.c: Block device Oops/Panic logger
    >> + *
    >> + * Copyright (C) 2019 liaoweixiong <liaoweixiong@gallwinnertech.com>
    >> + *
    >> + * This program is free software; you can redistribute it and/or modify
    >> + * it under the terms of the GNU General Public License version 2 as
    >> + * published by the Free Software Foundation.
    >> + *
    >> + * This program is distributed in the hope that it will be useful,
    >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    >> + * GNU General Public License for more details.
    >> + *
    >> + */
    >> +#define pr_fmt(fmt) "blkbuf: " fmt
    >> +
    >> +#include <linux/kernel.h>
    >> +#include <linux/module.h>
    >> +#include <linux/pstore_blk.h>
    >> +
    >> +struct blkz_info blkbuf_info = {
    >> + .owner = THIS_MODULE,
    >> + .name = "blkbuf",
    >> + .part_size = 512 * 1024,
    >> + .dmesg_size = 64 * 1024,
    >> + .dump_oops = true,
    >> +};
    >> +
    >> +static int __init blkbuf_init(void)
    >> +{
    >> + return blkz_register(&blkbuf_info);
    >> +}
    >> +module_init(blkbuf_init);
    >> +
    >> +static void __exit blkbuf_exit(void)
    >> +{
    >> + blkz_unregister(&blkbuf_info);
    >> +}
    >> +module_exit(blkbuf_exit);
    >> +
    >> +MODULE_LICENSE("GPL");
    >> +MODULE_AUTHOR("liaoweixiong <liaoweixiong@allwinnertech.com>");
    >> +MODULE_DESCRIPTION("Sample for Pstore BLK with Oops logger");
    >> --
    >> 1.9.1
    >>
    >
    >

    \
     
     \ /
      Last update: 2019-01-19 10:20    [W:2.191 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site