@@ -94,6 +94,17 @@ struct bdev_info {
94
94
sector_t start_sect ;
95
95
};
96
96
97
+ #define check_size (name , alignsize ) ({ \
98
+ long _##name_ = (name); \
99
+ _##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
100
+ if (_##name_ & ((alignsize) - 1)) { \
101
+ pr_info(#name " must align to %d\n", \
102
+ (alignsize)); \
103
+ _##name_ = ALIGN(name, (alignsize)); \
104
+ } \
105
+ _##name_; \
106
+ })
107
+
97
108
/**
98
109
* struct pstore_device_info - back-end pstore/blk driver structure.
99
110
*
@@ -149,13 +160,11 @@ static int psblk_register_do(struct pstore_device_info *dev)
149
160
dev -> flags = UINT_MAX ;
150
161
151
162
#define verify_size (name , alignsize , enabled ) { \
152
- long _##name_ = (enabled) ? (name) : 0; \
153
- _##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \
154
- if (_##name_ & ((alignsize) - 1)) { \
155
- pr_info(#name " must align to %d\n", \
156
- (alignsize)); \
157
- _##name_ = ALIGN(name, (alignsize)); \
158
- } \
163
+ long _##name_; \
164
+ if (enabled) \
165
+ _##name_ = check_size(name, alignsize); \
166
+ else \
167
+ _##name_ = 0; \
159
168
name = _##name_ / 1024; \
160
169
pstore_zone_info->name = _##name_; \
161
170
}
@@ -453,6 +462,20 @@ void unregister_pstore_blk(unsigned int major)
453
462
}
454
463
EXPORT_SYMBOL_GPL (unregister_pstore_blk );
455
464
465
+ /* get information of pstore/blk */
466
+ int pstore_blk_get_config (struct pstore_blk_config * info )
467
+ {
468
+ strncpy (info -> device , blkdev , 80 );
469
+ info -> max_reason = max_reason ;
470
+ info -> kmsg_size = check_size (kmsg_size , 4096 );
471
+ info -> pmsg_size = check_size (pmsg_size , 4096 );
472
+ info -> ftrace_size = check_size (ftrace_size , 4096 );
473
+ info -> console_size = check_size (console_size , 4096 );
474
+
475
+ return 0 ;
476
+ }
477
+ EXPORT_SYMBOL_GPL (pstore_blk_get_config );
478
+
456
479
static void __exit pstore_blk_exit (void )
457
480
{
458
481
mutex_lock (& pstore_blk_lock );
0 commit comments