block: Add vfs_msg() interface
In preparation of moving DAX capability checks to the block layer from filesystem code, add a VFS message interface that aligns with filesystem's message format. For instance, a vfs_msg() message followed by XFS messages in case of a dax mount error may look like: VFS (pmem0p1): error: unaligned partition for dax XFS (pmem0p1): DAX unsupported by block device. Turning off DAX. XFS (pmem0p1): Mounting V5 Filesystem : vfs_msg() is largely based on ext4_msg(). Signed-off-by: Toshi Kani <toshi.kani@hpe.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Jens Axboe <axboe@fb.com> Cc: "Theodore Ts'o" <tytso@mit.edu> Cc: Andreas Dilger <adilger.kernel@dilger.ca> Cc: Jan Kara <jack@suse.cz> Cc: Dave Chinner <david@fromorbit.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Boaz Harrosh <boaz@plexistor.com> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
This commit is contained in:
parent
7795bec89e
commit
2af3a8159c
|
@ -50,6 +50,18 @@ struct block_device *I_BDEV(struct inode *inode)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(I_BDEV);
|
EXPORT_SYMBOL(I_BDEV);
|
||||||
|
|
||||||
|
void __vfs_msg(struct super_block *sb, const char *prefix, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
struct va_format vaf;
|
||||||
|
va_list args;
|
||||||
|
|
||||||
|
va_start(args, fmt);
|
||||||
|
vaf.fmt = fmt;
|
||||||
|
vaf.va = &args;
|
||||||
|
printk_ratelimited("%sVFS (%s): %pV\n", prefix, sb->s_id, &vaf);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
static void bdev_write_inode(struct block_device *bdev)
|
static void bdev_write_inode(struct block_device *bdev)
|
||||||
{
|
{
|
||||||
struct inode *inode = bdev->bd_inode;
|
struct inode *inode = bdev->bd_inode;
|
||||||
|
|
|
@ -767,6 +767,17 @@ static inline void rq_flush_dcache_pages(struct request *rq)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PRINTK
|
||||||
|
#define vfs_msg(sb, level, fmt, ...) \
|
||||||
|
__vfs_msg(sb, level, fmt, ##__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define vfs_msg(sb, level, fmt, ...) \
|
||||||
|
do { \
|
||||||
|
no_printk(fmt, ##__VA_ARGS__); \
|
||||||
|
__vfs_msg(sb, "", " "); \
|
||||||
|
} while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int blk_register_queue(struct gendisk *disk);
|
extern int blk_register_queue(struct gendisk *disk);
|
||||||
extern void blk_unregister_queue(struct gendisk *disk);
|
extern void blk_unregister_queue(struct gendisk *disk);
|
||||||
extern blk_qc_t generic_make_request(struct bio *bio);
|
extern blk_qc_t generic_make_request(struct bio *bio);
|
||||||
|
|
Loading…
Reference in New Issue