init: Add NVME support to the boot_part_uuid method of managing boot devices
NVME devices have a subsystem of "class/nvme". Add that to the list of subsystems we check so we can identify them properly. Bug: 316324155 Test: Boot on a device with nvme Change-Id: I2ab3f6890f62f525dba150a0368c666a1c4c875e
This commit is contained in:
parent
243850ca5f
commit
dd8edea859
2 changed files with 16 additions and 3 deletions
|
|
@ -193,9 +193,11 @@ BlockDeviceInfo DeviceHandler::GetBlockDeviceInfo(const std::string& uevent_path
|
|||
BlockDeviceInfo info;
|
||||
|
||||
if (!boot_part_uuid_.empty()) {
|
||||
// Only use the more specific "MMC" or "SCSI" match if a partition UUID
|
||||
// was passed. Old bootloaders that aren't passing the partition UUID
|
||||
// instead pass the path to the closest "platform" device. It would
|
||||
// Only use the more specific "MMC" / "NVME" / "SCSI" match if a
|
||||
// partition UUID was passed.
|
||||
//
|
||||
// Old bootloaders that aren't passing the partition UUID instead
|
||||
// pass the path to the closest "platform" device. It would
|
||||
// break them if we chose this deeper (more specific) path.
|
||||
//
|
||||
// When we have a UUID we _want_ the more specific path since it can
|
||||
|
|
@ -204,6 +206,8 @@ BlockDeviceInfo DeviceHandler::GetBlockDeviceInfo(const std::string& uevent_path
|
|||
// classify them both the same by using the path to the USB controller.
|
||||
if (FindMmcDevice(uevent_path, &info.str)) {
|
||||
info.type = "mmc";
|
||||
} else if (FindNvmeDevice(uevent_path, &info.str)) {
|
||||
info.type = "nvme";
|
||||
} else if (FindScsiDevice(uevent_path, &info.str)) {
|
||||
info.type = "scsi";
|
||||
}
|
||||
|
|
@ -325,6 +329,14 @@ bool DeviceHandler::FindMmcDevice(const std::string& path, std::string* mmc_devi
|
|||
return FindSubsystemDevice(path, mmc_device_path, subsystem_paths);
|
||||
}
|
||||
|
||||
bool DeviceHandler::FindNvmeDevice(const std::string& path, std::string* nvme_device_path) const {
|
||||
const std::set<std::string> subsystem_paths = {
|
||||
sysfs_mount_point_ + "/class/nvme",
|
||||
};
|
||||
|
||||
return FindSubsystemDevice(path, nvme_device_path, subsystem_paths);
|
||||
}
|
||||
|
||||
bool DeviceHandler::FindScsiDevice(const std::string& path, std::string* scsi_device_path) const {
|
||||
const std::set<std::string> subsystem_paths = {
|
||||
sysfs_mount_point_ + "/bus/scsi",
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ class DeviceHandler : public UeventHandler {
|
|||
const std::set<std::string>& subsystem_paths) const;
|
||||
bool FindPlatformDevice(const std::string& path, std::string* platform_device_path) const;
|
||||
bool FindMmcDevice(const std::string& path, std::string* mmc_device_path) const;
|
||||
bool FindNvmeDevice(const std::string& path, std::string* nvme_device_path) const;
|
||||
bool FindScsiDevice(const std::string& path, std::string* scsi_device_path) const;
|
||||
std::tuple<mode_t, uid_t, gid_t> GetDevicePermissions(
|
||||
const std::string& path, const std::vector<std::string>& links) const;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue