Revert^2 "init: Look for super partition only on a boot device"
This reverts commit 8d71220df2.
Reason for revert: Fix for gcar emulator (basically all QEMU-based emulators) landed at aosp/3315253 and aosp/3160116.
Change-Id: If4eddd3f7e224c31019ad3bd752e2375c7567780
This commit is contained in:
parent
8d71220df2
commit
5bfb93678f
3 changed files with 28 additions and 1 deletions
|
|
@ -98,7 +98,11 @@ ListenerAction BlockDevInitializer::HandleUevent(const Uevent& uevent,
|
|||
|
||||
LOG(VERBOSE) << __PRETTY_FUNCTION__ << ": found partition: " << name;
|
||||
|
||||
devices->erase(iter);
|
||||
// Remove partition from the list only if it was found on boot device
|
||||
if (device_handler_->IsBootDevice(uevent)) {
|
||||
devices->erase(iter);
|
||||
}
|
||||
|
||||
device_handler_->HandleUevent(uevent);
|
||||
return devices->empty() ? ListenerAction::kStop : ListenerAction::kContinue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -188,6 +188,28 @@ void SysfsPermissions::SetPermissions(const std::string& path) const {
|
|||
}
|
||||
}
|
||||
|
||||
bool DeviceHandler::IsBootDevice(const Uevent& uevent) const {
|
||||
std::string device;
|
||||
|
||||
if (FindPlatformDevice(uevent.path, &device)) {
|
||||
// Skip /devices/platform or /devices/ if present
|
||||
static constexpr std::string_view devices_platform_prefix = "/devices/platform/";
|
||||
static constexpr std::string_view devices_prefix = "/devices/";
|
||||
|
||||
if (StartsWith(device, devices_platform_prefix)) {
|
||||
device = device.substr(devices_platform_prefix.length());
|
||||
} else if (StartsWith(device, devices_prefix)) {
|
||||
device = device.substr(devices_prefix.length());
|
||||
}
|
||||
} else if (FindPciDevicePrefix(uevent.path, &device)) {
|
||||
} else if (FindVbdDevicePrefix(uevent.path, &device)) {
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return boot_devices_.find(device) != boot_devices_.end();
|
||||
}
|
||||
|
||||
std::string DeviceHandler::GetPartitionNameForDevice(const std::string& query_device) {
|
||||
static const auto partition_map = [] {
|
||||
std::vector<std::pair<std::string, std::string>> partition_map;
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ class DeviceHandler : public UeventHandler {
|
|||
// `androidboot.partition_map=vdb,metadata;vdc,userdata` maps `vdb` to `metadata` and `vdc` to
|
||||
// `userdata`.
|
||||
static std::string GetPartitionNameForDevice(const std::string& device);
|
||||
bool IsBootDevice(const Uevent& uevent) const;
|
||||
|
||||
private:
|
||||
void ColdbootDone() override;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue