[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1585126506-18635-10-git-send-email-liaoweixiong@allwinnertech.com>
Date: Wed, 25 Mar 2020 16:55:04 +0800
From: WeiXiong Liao <liaoweixiong@...winnertech.com>
To: Kees Cook <keescook@...omium.org>,
Anton Vorontsov <anton@...msg.org>,
Colin Cross <ccross@...roid.com>,
Tony Luck <tony.luck@...el.com>,
Jonathan Corbet <corbet@....net>,
Miquel Raynal <miquel.raynal@...tlin.com>,
Richard Weinberger <richard@....at>,
Vignesh Raghavendra <vigneshr@...com>,
Mauro Carvalho Chehab <mchehab+samsung@...nel.org>,
Rob Herring <robh@...nel.org>,
"David S. Miller" <davem@...emloft.net>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>
Cc: linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mtd@...ts.infradead.org,
WeiXiong Liao <liaoweixiong@...winnertech.com>
Subject: [PATCH v3 09/11] pstore/blk: a way to get user configure about pstore front-ends.
It's one of a series of patches to adapt to MTD device.
It's different to block driver, MTD driver should check zone size
and get identifier to MTD device. To make it, psblk_usr_info() is
created.
Signed-off-by: WeiXiong Liao <liaoweixiong@...winnertech.com>
---
fs/pstore/pstore_blk.c | 37 ++++++++++++++++++++++++++++++-------
include/linux/pstore_blk.h | 10 ++++++++++
2 files changed, 40 insertions(+), 7 deletions(-)
diff --git a/fs/pstore/pstore_blk.c b/fs/pstore/pstore_blk.c
index d6949146135b..061609b66d8a 100644
--- a/fs/pstore/pstore_blk.c
+++ b/fs/pstore/pstore_blk.c
@@ -84,6 +84,17 @@
sector_t start_sect;
} g_bdev_info;
+#define check_size(name, alignsize) ({ \
+ long _##name_ = (name); \
+ _##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
+ if (_##name_ & ((alignsize) - 1)) { \
+ pr_info(#name " must align to %d\n", \
+ (alignsize)); \
+ _##name_ = ALIGN(name, (alignsize)); \
+ } \
+ _##name_; \
+})
+
/**
* struct psblk_device - back-end pstore/blk driver structure.
*
@@ -138,13 +149,11 @@ static int psblk_register_do(struct psblk_device *dev)
if (!dev->flags)
dev->flags = UINT_MAX;
#define verify_size(name, alignsize, enable) { \
- long _##name_ = (enable) ? (name) : 0; \
- _##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
- if (_##name_ & ((alignsize) - 1)) { \
- pr_info(#name " must align to %d\n", \
- (alignsize)); \
- _##name_ = ALIGN(name, (alignsize)); \
- } \
+ long _##name_; \
+ if (enable) \
+ _##name_ = check_size(name, alignsize); \
+ else \
+ _##name_ = 0; \
name = _##name_ / 1024; \
psz_info->name = _##name_; \
}
@@ -464,6 +473,20 @@ int psblk_blkdev_info(dev_t *devt, sector_t *nr_sects, sector_t *start_sect)
}
EXPORT_SYMBOL_GPL(psblk_blkdev_info);
+/* get information of pstore/blk */
+int psblk_usr_info(struct psblk_info *info)
+{
+ strncpy(info->device, blkdev, 80);
+ info->dump_oops = dump_oops <= 0 ? 0 : 1;
+ info->oops_size = check_size(oops_size, 4096);
+ info->pmsg_size = check_size(pmsg_size, 4096);
+ info->ftrace_size = check_size(ftrace_size, 4096);
+ info->console_size = check_size(console_size, 4096);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(psblk_usr_info);
+
MODULE_LICENSE("GPL");
MODULE_AUTHOR("WeiXiong Liao <liaoweixiong@...winnertech.com>");
MODULE_DESCRIPTION("Block device Oops/Panic logger");
diff --git a/include/linux/pstore_blk.h b/include/linux/pstore_blk.h
index 828b0763d477..d2ea1733b51a 100644
--- a/include/linux/pstore_blk.h
+++ b/include/linux/pstore_blk.h
@@ -27,4 +27,14 @@ int psblk_register_blkdev(unsigned int major, unsigned int flags,
void psblk_unregister_blkdev(unsigned int major);
int psblk_blkdev_info(dev_t *devt, sector_t *nr_sects, sector_t *start_sect);
+struct psblk_info {
+ int dump_oops;
+ char device[80];
+ unsigned long oops_size;
+ unsigned long pmsg_size;
+ unsigned long console_size;
+ unsigned long ftrace_size;
+};
+int psblk_usr_info(struct psblk_info *info);
+
#endif
--
1.9.1
Powered by blists - more mailing lists