[MTD] mtd_blkdevs.c: Fix names when many devices/partitions are created
mtdblock (and other mtd modules that use the mtd_blkdevs interface between the mtd translation layers and the linux block layer) handles incorrectly more than 10 devices or 26 partitions in the names passed to the generic disk layer. This causes the device file names and other info kept by the generic disk/block layers to have names such as "mtdblock<". Use integer formatting for device numbers; use "aa-az" for partitions 27-52, "ba-bz" for 53-78... Signed-off-by: Todd Poynor <tpoynor@mvista.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
7ad2b7f595
commit
65a8de36b4
1 changed files with 13 additions and 3 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: mtd_blkdevs.c,v 1.25 2005/07/29 01:57:55 tpoynor Exp $
|
* $Id: mtd_blkdevs.c,v 1.26 2005/07/29 19:42:04 tpoynor Exp $
|
||||||
*
|
*
|
||||||
* (C) 2003 David Woodhouse <dwmw2@infradead.org>
|
* (C) 2003 David Woodhouse <dwmw2@infradead.org>
|
||||||
*
|
*
|
||||||
|
@ -289,8 +289,18 @@ int add_mtd_blktrans_dev(struct mtd_blktrans_dev *new)
|
||||||
gd->first_minor = (new->devnum) << tr->part_bits;
|
gd->first_minor = (new->devnum) << tr->part_bits;
|
||||||
gd->fops = &mtd_blktrans_ops;
|
gd->fops = &mtd_blktrans_ops;
|
||||||
|
|
||||||
snprintf(gd->disk_name, sizeof(gd->disk_name),
|
if (tr->part_bits)
|
||||||
"%s%c", tr->name, (tr->part_bits?'a':'0') + new->devnum);
|
if (new->devnum < 26)
|
||||||
|
snprintf(gd->disk_name, sizeof(gd->disk_name),
|
||||||
|
"%s%c", tr->name, 'a' + new->devnum);
|
||||||
|
else
|
||||||
|
snprintf(gd->disk_name, sizeof(gd->disk_name),
|
||||||
|
"%s%c%c", tr->name,
|
||||||
|
'a' - 1 + new->devnum / 26,
|
||||||
|
'a' + new->devnum % 26);
|
||||||
|
else
|
||||||
|
snprintf(gd->disk_name, sizeof(gd->disk_name),
|
||||||
|
"%s%d", tr->name, new->devnum);
|
||||||
|
|
||||||
/* 2.5 has capacity in units of 512 bytes while still
|
/* 2.5 has capacity in units of 512 bytes while still
|
||||||
having BLOCK_SIZE_BITS set to 10. Just to keep us amused. */
|
having BLOCK_SIZE_BITS set to 10. Just to keep us amused. */
|
||||||
|
|
Loading…
Reference in a new issue