Workaround perdev_minors path change in Linux
This upstream Linux change has been discussed at https://patchwork.kernel.org/patch/8281851/
And included in AOSP in https://android-review.googlesource.com/c/kernel/common/+/202752
Some devices have been released without it, so we need this change to
have a working SDcard on those devices.
Change-Id: I323d85bd8381f82b75db09493ddc22f432cec548
diff --git a/Disk.cpp b/Disk.cpp
index b424aba..6c09295 100644
--- a/Disk.cpp
+++ b/Disk.cpp
@@ -49,7 +49,8 @@
static const char* kSgdiskToken = " \t\n";
static const char* kSysfsLoopMaxMinors = "/sys/module/loop/parameters/max_part";
-static const char* kSysfsMmcMaxMinors = "/sys/module/mmcblk/parameters/perdev_minors";
+static const char* kSysfsMmcMaxMinorsDeprecated = "/sys/module/mmcblk/parameters/perdev_minors";
+static const char* kSysfsMmcMaxMinors = "/sys/module/mmc_block/parameters/perdev_minors";
static const unsigned int kMajorBlockLoop = 7;
static const unsigned int kMajorBlockScsiA = 8;
@@ -559,7 +560,8 @@
case kMajorBlockMmc: {
// Per Documentation/devices.txt this is dynamic
std::string tmp;
- if (!ReadFileToString(kSysfsMmcMaxMinors, &tmp)) {
+ if (!ReadFileToString(kSysfsMmcMaxMinors, &tmp) &&
+ !ReadFileToString(kSysfsMmcMaxMinorsDeprecated, &tmp)) {
LOG(ERROR) << "Failed to read max minors";
return -errno;
}