49 lines
1.7 KiB
Diff
49 lines
1.7 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Sun, 26 Oct 2014 02:09:23 +0000
|
|
Subject: mmc_block: Increase max_devices
|
|
Bug-Debian: https://bugs.debian.org/765621
|
|
|
|
Currently the driver imposes a limit of 256 total minor numbers,
|
|
apparently based on the historic Unix/Linux limit. This is quite
|
|
restrictive, particularly if we raise the maximum number of
|
|
partitions per card to 256 to match sd.
|
|
|
|
In order to make the full minor number space available we would
|
|
have to replace the static dev_use and name_use arrays with struct
|
|
ida. But we can at least allow use of 256 cards rather than just
|
|
256 minors, with only a small change.
|
|
|
|
---
|
|
--- a/drivers/mmc/card/block.c
|
|
+++ b/drivers/mmc/card/block.c
|
|
@@ -78,13 +78,16 @@ static int perdev_minors = CONFIG_MMC_BL
|
|
|
|
/*
|
|
* We've only got one major, so number of mmcblk devices is
|
|
- * limited to 256 / number of minors per device.
|
|
+ * limited to (1 << 20) / number of minors per device. It is also
|
|
+ * currently limited by the size of the static bitmaps below.
|
|
*/
|
|
static int max_devices;
|
|
|
|
-/* 256 minors, so at most 256 separate devices */
|
|
-static DECLARE_BITMAP(dev_use, 256);
|
|
-static DECLARE_BITMAP(name_use, 256);
|
|
+#define MAX_DEVICES 256
|
|
+
|
|
+/* TODO: Replace these with struct ida */
|
|
+static DECLARE_BITMAP(dev_use, MAX_DEVICES);
|
|
+static DECLARE_BITMAP(name_use, MAX_DEVICES);
|
|
|
|
/*
|
|
* There is one mmc_blk_data per slot.
|
|
@@ -2558,7 +2561,7 @@ static int __init mmc_blk_init(void)
|
|
if (perdev_minors != CONFIG_MMC_BLOCK_MINORS)
|
|
pr_info("mmcblk: using %d minors per device\n", perdev_minors);
|
|
|
|
- max_devices = 256 / perdev_minors;
|
|
+ max_devices = min(MAX_DEVICES, (1 << MINORBITS) / perdev_minors);
|
|
|
|
res = register_blkdev(MMC_BLOCK_MAJOR, "mmc");
|
|
if (res)
|