}
switch (major(mDevice)) {
+ case kMajorBlockCdrom:
+ LOG(DEBUG) << "Found a CDROM: " << mSysPath;
+ // fall through
case kMajorBlockScsiA: case kMajorBlockScsiB: case kMajorBlockScsiC: case kMajorBlockScsiD:
case kMajorBlockScsiE: case kMajorBlockScsiF: case kMajorBlockScsiG: case kMajorBlockScsiH:
case kMajorBlockScsiI: case kMajorBlockScsiJ: case kMajorBlockScsiK: case kMajorBlockScsiL:
cmd.push_back(mDevPath);
std::vector<std::string> output;
- status_t res = ForkExecvp(cmd, output);
+ status_t res = maxMinors ? ForkExecvp(cmd, output) : ENODEV;
if (res != OK) {
LOG(WARNING) << "sgdisk failed to scan " << mDevPath;
// Per Documentation/devices.txt this is static
return 15;
}
+ case kMajorBlockCdrom: {
+ return 0;
+ }
case kMajorBlockMmc: {
// Per Documentation/devices.txt this is dynamic
std::string tmp;
enum {
kMajorBlockScsiA = 8,
+ kMajorBlockCdrom = 11,
kMajorBlockScsiB = 65,
kMajorBlockScsiC = 66,
kMajorBlockScsiD = 67,
kEmmc = 1 << 4,
/* Flag that disk is non-removable */
kNonRemovable = 1 << 5,
+ /* Flag that disk is CDROM */
+ kCdrom = 1 << 6,
};
const std::string& getId() { return mId; }
ret = ntfs::Check(mDevPath);
} else if (mFsType == "vfat") {
ret = vfat::Check(mDevPath);
- } else {
+ } else if (mFsType != "iso9660") {
LOG(WARNING) << getId() << " unsupported filesystem check, skipping";
}
if (ret) {
int flags = source->getFlags();
if (major == android::vold::Disk::kMajorBlockMmc) {
flags |= android::vold::Disk::Flags::kSd;
+ } else if (major == android::vold::Disk::kMajorBlockCdrom) {
+ flags |= android::vold::Disk::Flags::kCdrom;
} else {
flags |= android::vold::Disk::Flags::kUsb;
}