diff options
Diffstat (limited to 'model/Disk.cpp')
| -rw-r--r-- | model/Disk.cpp | 33 |
1 files changed, 2 insertions, 31 deletions
diff --git a/model/Disk.cpp b/model/Disk.cpp index 905793d..1fa30ca 100644 --- a/model/Disk.cpp +++ b/model/Disk.cpp @@ -79,8 +79,6 @@ static const unsigned int kMajorBlockScsiN = 133; static const unsigned int kMajorBlockScsiO = 134; static const unsigned int kMajorBlockScsiP = 135; static const unsigned int kMajorBlockMmc = 179; -static const unsigned int kMajorBlockExperimentalMin = 240; -static const unsigned int kMajorBlockExperimentalMax = 254; static const unsigned int kMajorBlockDynamicMin = 234; static const unsigned int kMajorBlockDynamicMax = 512; @@ -95,33 +93,6 @@ enum class Table { kGpt, }; -static bool isVirtioBlkDevice(unsigned int major) { - /* - * The new emulator's "ranchu" virtual board no longer includes a goldfish - * MMC-based SD card device; instead, it emulates SD cards with virtio-blk, - * which has been supported by upstream kernel and QEMU for quite a while. - * Unfortunately, the virtio-blk block device driver does not use a fixed - * major number, but relies on the kernel to assign one from a specific - * range of block majors, which are allocated for "LOCAL/EXPERIMENAL USE" - * per Documentation/devices.txt. This is true even for the latest Linux - * kernel (4.4; see init() in drivers/block/virtio_blk.c). - * - * This makes it difficult for vold to detect a virtio-blk based SD card. - * The current solution checks two conditions (both must be met): - * - * a) If the running environment is the emulator; - * b) If the major number is an experimental block device major number (for - * x86/x86_64 3.10 ranchu kernels, virtio-blk always gets major number - * 253, but it is safer to match the range than just one value). - * - * Other conditions could be used, too, e.g. the hardware name should be - * "ranchu", the device's sysfs path should end with "/block/vd[d-z]", etc. - * But just having a) and b) is enough for now. - */ - return IsRunningInEmulator() && major >= kMajorBlockExperimentalMin && - major <= kMajorBlockExperimentalMax; -} - static bool isNvmeBlkDevice(unsigned int major, const std::string& sysPath) { return sysPath.find("nvme") != std::string::npos && major >= kMajorBlockDynamicMin && major <= kMajorBlockDynamicMax; @@ -328,7 +299,7 @@ status_t Disk::readMetadata() { break; } default: { - if (isVirtioBlkDevice(majorId)) { + if (IsVirtioBlkDevice(majorId)) { LOG(DEBUG) << "Recognized experimental block major ID " << majorId << " as virtio-blk (emulator's virtual SD card device)"; mLabel = "Virtual"; @@ -687,7 +658,7 @@ int Disk::getMaxMinors() { return std::stoi(tmp); } default: { - if (isVirtioBlkDevice(majorId)) { + if (IsVirtioBlkDevice(majorId)) { // drivers/block/virtio_blk.c has "#define PART_BITS 4", so max is // 2^4 - 1 = 15 return 15; |
