mmc_block: Increase max_devices and set MMC_BLOCK_MINORS to 256 (Closes: #765621)

svn path=/dists/sid/linux/; revision=21975
This commit is contained in:
Ben Hutchings 2014-10-26 02:26:08 +00:00
parent 8e1020e9f4
commit 44ff4a9061
4 changed files with 52 additions and 1 deletions

2
debian/changelog vendored
View File

@ -6,6 +6,8 @@ linux (3.16.5-2) UNRELEASED; urgency=medium
* [i386/486] Update description to say that the processor must have a TSC
(see #766105)
* [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685)
* mmc_block: Increase max_devices and set MMC_BLOCK_MINORS to 256
(Closes: #765621)
[ Mauricio Faria de Oliveira ]
* [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles

View File

@ -2189,7 +2189,7 @@ CONFIG_SENSORS_LIS3_I2C=m
##
## file: drivers/mmc/card/Kconfig
##
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_BLOCK_MINORS=256
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=m
# CONFIG_MMC_TEST is not set

View File

@ -0,0 +1,48 @@
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)

View File

@ -388,3 +388,4 @@ bugfix/s390/s390-3215-fix-tty-output-containing-tabs.patch
bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch
bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch
bugfix/all/qla2xxx-fix-kernel-NULL-pointer-access.patch
features/all/mmc_block-increase-max_devices.patch