Currently each cpp defines its own kMajor* that can't be shared.
Move the kMajor* to a header to avoid duplicate definitions.
Change isVirtioBlkDevice() to be a public static method of Disk
so that the logic could be shared as well.
/* 512MiB is large enough for testing purposes */
static const unsigned int kSizeVirtualDisk = 536870912;
-static const unsigned int kMajorBlockMmc = 179;
-static const unsigned int kMajorBlockExperimentalMin = 240;
-static const unsigned int kMajorBlockExperimentalMax = 254;
-
VolumeManager* VolumeManager::sInstance = NULL;
VolumeManager* VolumeManager::Instance() {
// emulator-specific; see Disk.cpp for details) devices are SD,
// and that everything else is USB
int flags = source->getFlags();
- if (major == kMajorBlockMmc || (android::vold::IsRunningInEmulator() &&
- major >= (int)kMajorBlockExperimentalMin &&
- major <= (int)kMajorBlockExperimentalMax)) {
+ if (major == android::vold::Disk::kMajorBlockMmc ||
+ android::vold::Disk::isVirtioBlkDevice(major)) {
flags |= android::vold::Disk::Flags::kSd;
} else {
flags |= android::vold::Disk::Flags::kUsb;
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;
-static const unsigned int kMajorBlockScsiB = 65;
-static const unsigned int kMajorBlockScsiC = 66;
-static const unsigned int kMajorBlockScsiD = 67;
-static const unsigned int kMajorBlockScsiE = 68;
-static const unsigned int kMajorBlockScsiF = 69;
-static const unsigned int kMajorBlockScsiG = 70;
-static const unsigned int kMajorBlockScsiH = 71;
-static const unsigned int kMajorBlockScsiI = 128;
-static const unsigned int kMajorBlockScsiJ = 129;
-static const unsigned int kMajorBlockScsiK = 130;
-static const unsigned int kMajorBlockScsiL = 131;
-static const unsigned int kMajorBlockScsiM = 132;
-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;
-
static const char* kGptBasicData = "EBD0A0A2-B9E5-4433-87C0-68B6B72699C7";
static const char* kGptAndroidMeta = "19A710A2-B3CA-11E4-B026-10604B889DCF";
static const char* kGptAndroidExpand = "193D1EA4-B3CA-11E4-B075-10604B889DCF";
kGpt,
};
-static bool isVirtioBlkDevice(unsigned int major) {
+bool Disk::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,
}
static bool isNvmeBlkDevice(unsigned int major, const std::string& sysPath) {
- return sysPath.find("nvme") != std::string::npos && major >= kMajorBlockDynamicMin &&
- major <= kMajorBlockDynamicMax;
+ return sysPath.find("nvme") != std::string::npos && major >= Disk::kMajorBlockDynamicMin &&
+ major <= Disk::kMajorBlockDynamicMax;
}
Disk::Disk(const std::string& eventPath, dev_t device, const std::string& nickname, int flags)
Disk(const std::string& eventPath, dev_t device, const std::string& nickname, int flags);
virtual ~Disk();
+ enum {
+ kMajorBlockLoop = 7,
+ kMajorBlockScsiA = 8,
+ kMajorBlockScsiB = 65,
+ kMajorBlockScsiC = 66,
+ kMajorBlockScsiD = 67,
+ kMajorBlockScsiE = 68,
+ kMajorBlockScsiF = 69,
+ kMajorBlockScsiG = 70,
+ kMajorBlockScsiH = 71,
+ kMajorBlockScsiI = 128,
+ kMajorBlockScsiJ = 129,
+ kMajorBlockScsiK = 130,
+ kMajorBlockScsiL = 131,
+ kMajorBlockScsiM = 132,
+ kMajorBlockScsiN = 133,
+ kMajorBlockScsiO = 134,
+ kMajorBlockScsiP = 135,
+ kMajorBlockMmc = 179,
+ kMajorBlockExperimentalMin = 240,
+ kMajorBlockExperimentalMax = 254,
+ kMajorBlockDynamicMin = 234,
+ kMajorBlockDynamicMax = 512,
+ };
+
enum Flags {
/* Flag that disk is adoptable */
kAdoptable = 1 << 0,
virtual status_t partitionPrivate();
virtual status_t partitionMixed(int8_t ratio);
+ static bool isVirtioBlkDevice(unsigned int major);
+
protected:
/* ID that uniquely references this disk */
std::string mId;
namespace android {
namespace vold {
-static const unsigned int kMajorBlockMmc = 179;
-
PrivateVolume::PrivateVolume(dev_t device, const std::string& keyRaw)
: VolumeBase(Type::kPrivate), mRawDevice(device), mKeyRaw(keyRaw) {
setId(StringPrintf("private:%u,%u", major(device), minor(device)));
if (fsType == "auto") {
// For now, assume that all MMC devices are flash-based SD cards, and
// give everyone else ext4 because sysfs rotational isn't reliable.
- if ((major(mRawDevice) == kMajorBlockMmc) && f2fs::IsSupported()) {
+ if ((major(mRawDevice) == Disk::kMajorBlockMmc) && f2fs::IsSupported()) {
resolvedFsType = "f2fs";
} else {
resolvedFsType = "ext4";