On 22 October 2015 at 19:00, John Stultz <john.stultz@xxxxxxxxxx> wrote: > From: Colin Cross <ccross@xxxxxxxxxxx> > > It is quite common for Android devices to utilize more > then 8 partitions on internal eMMC storage. > > The vanilla kernel can support this via > CONFIG_MMC_BLOCK_MINORS, however that solution caps the > system to 256 minors total, which limits the number of > mmc cards the system can support. > > This patch, which has been carried for quite awhile in > the AOSP common tree, provides an alternative solution > that doesn't seem to limit the total card count. So I > wanted to submit it for consideration upstream. > > This patch sets the GENHD_FL_EXT_DEVT flag, which will > allocate minor number in major 259 for partitions past > disk->minors. > > It also removes the use of disk_devt to determine devidx > from md->disk. md->disk->first_minor is always initialized > from devidx and can always be used to recover it. > > Thoughts or feedback would be greatly appreciated. > > Cc: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> > Cc: Ben Hutchings <ben@xxxxxxxxxxxxxxx> > Cc: Chuanxiao Dong <chuanxiao.dong@xxxxxxxxx> > Cc: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx> > Cc: Austin S Hemmelgarn <ahferroin7@xxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Android Kernel Team <kernel-team@xxxxxxxxxxx> > Cc: linux-mmc@xxxxxxxxxxxxxxx > Signed-off-by: Colin Cross <ccross@xxxxxxxxxxx> > [jstultz: Added context to commit message] > Signed-off-by: John Stultz <john.stultz@xxxxxxxxxx> Thanks, applied for next! I did some minor changes to the change-log, and updated the prefix of the commit msg header. Kind regards Uffe > --- > v2: Added context to commit message about CONFIG_MMC_BLOCK_MINORS > and its limitations. > > drivers/mmc/card/block.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c > index c742cfd..564436e 100644 > --- a/drivers/mmc/card/block.c > +++ b/drivers/mmc/card/block.c > @@ -172,11 +172,7 @@ static struct mmc_blk_data *mmc_blk_get(struct gendisk *disk) > > static inline int mmc_get_devidx(struct gendisk *disk) > { > - int devmaj = MAJOR(disk_devt(disk)); > - int devidx = MINOR(disk_devt(disk)) / perdev_minors; > - > - if (!devmaj) > - devidx = disk->first_minor / perdev_minors; > + int devidx = disk->first_minor / perdev_minors; > return devidx; > } > > @@ -2162,6 +2158,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card, > md->disk->queue = md->queue.queue; > md->disk->driverfs_dev = parent; > set_disk_ro(md->disk, md->read_only || default_ro); > + md->disk->flags = GENHD_FL_EXT_DEVT; > if (area_type & (MMC_BLK_DATA_AREA_RPMB | MMC_BLK_DATA_AREA_BOOT)) > md->disk->flags |= GENHD_FL_NO_PART_SCAN; > > -- > 1.9.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html