From f347cd0249ccb16dd5147b1f6a6272670d78c517 Mon Sep 17 00:00:00 2001 From: Pierre-Hugues Husson Date: Tue, 28 Nov 2017 15:42:56 +0100 Subject: [PATCH] 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 --- Disk.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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* kSgdiskPath = "/system/bin/sgdisk"; 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 @@ int Disk::getMaxMinors() { 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; }