Re: [RFC][PATCH v2] mmc_block: Allow more than 8 partitions per card

From: Ulf Hansson
Date: Tue Dec 15 2015 - 10:11:35 EST


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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/