Embed block device name in struct block_device, thus we can replace the following code: char b[BDEVNAME_SIZE]; printk(KERN_XXX "...%s..\n", bdevname(bdev, b); with a much simpler and less stack usage version: printk(KERN_XXX "...%s..\n", bdev->bd_name); This is a RFC version, which I just included one sample with this change appiled. If this patch makes sense to you, I will file more patches to apply this change. Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Jens Axboe <axboe@xxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Yuanhan Liu <yuanhan.liu@xxxxxxxxxxxxxxx> --- fs/block_dev.c | 2 ++ include/linux/fs.h | 3 ++- 2 files changed, 4 insertions(+), 1 deletions(-) diff --git a/fs/block_dev.c b/fs/block_dev.c index 1e51919..5e796e58 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1213,6 +1213,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part) } bd_set_size(bdev, (loff_t)bdev->bd_part->nr_sects << 9); } + + disk_name(bdev->bd_disk, bdev->bd_part->partno, bdev->bd_name); } else { if (bdev->bd_contains == bdev) { ret = 0; diff --git a/include/linux/fs.h b/include/linux/fs.h index aa11047..98ea89d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -689,6 +689,7 @@ struct address_space { */ struct request_queue; +#define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */ struct block_device { dev_t bd_dev; /* not a kdev_t - it's a search key */ int bd_openers; @@ -724,6 +725,7 @@ struct block_device { int bd_fsfreeze_count; /* Mutex for freeze */ struct mutex bd_fsfreeze_mutex; + char bd_name[BDEVNAME_SIZE]; }; /* @@ -2323,7 +2325,6 @@ static inline void unregister_chrdev(unsigned int major, const char *name) } /* fs/block_dev.c */ -#define BDEVNAME_SIZE 32 /* Largest string for a blockdev identifier */ #define BDEVT_SIZE 10 /* Largest string for MAJ:MIN for blkdev */ #ifdef CONFIG_BLOCK -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html