Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ab1fd07 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "init: Don't look for logical partitions via uevents."

parents f07dbdd0 ab8414dd
Loading
Loading
Loading
Loading
+13 −2
Original line number Original line Diff line number Diff line
@@ -456,13 +456,20 @@ FirstStageMountVBootV2::FirstStageMountVBootV2() : avb_handle_(nullptr) {
bool FirstStageMountVBootV2::GetDmVerityDevices() {
bool FirstStageMountVBootV2::GetDmVerityDevices() {
    need_dm_verity_ = false;
    need_dm_verity_ = false;


    std::set<std::string> logical_partitions;

    // fstab_rec->blk_device has A/B suffix.
    // fstab_rec->blk_device has A/B suffix.
    for (auto fstab_rec : mount_fstab_recs_) {
    for (auto fstab_rec : mount_fstab_recs_) {
        if (fs_mgr_is_avb(fstab_rec)) {
        if (fs_mgr_is_avb(fstab_rec)) {
            need_dm_verity_ = true;
            need_dm_verity_ = true;
        }
        }
        if (fs_mgr_is_logical(fstab_rec)) {
            // Don't try to find logical partitions via uevent regeneration.
            logical_partitions.emplace(basename(fstab_rec->blk_device));
        } else {
            required_devices_partition_names_.emplace(basename(fstab_rec->blk_device));
            required_devices_partition_names_.emplace(basename(fstab_rec->blk_device));
        }
        }
    }


    // libavb verifies AVB metadata on all verified partitions at once.
    // libavb verifies AVB metadata on all verified partitions at once.
    // e.g., The device_tree_vbmeta_parts_ will be "vbmeta,boot,system,vendor"
    // e.g., The device_tree_vbmeta_parts_ will be "vbmeta,boot,system,vendor"
@@ -476,11 +483,15 @@ bool FirstStageMountVBootV2::GetDmVerityDevices() {
        std::vector<std::string> partitions = android::base::Split(device_tree_vbmeta_parts_, ",");
        std::vector<std::string> partitions = android::base::Split(device_tree_vbmeta_parts_, ",");
        std::string ab_suffix = fs_mgr_get_slot_suffix();
        std::string ab_suffix = fs_mgr_get_slot_suffix();
        for (const auto& partition : partitions) {
        for (const auto& partition : partitions) {
            std::string partition_name = partition + ab_suffix;
            if (logical_partitions.count(partition_name)) {
                continue;
            }
            // required_devices_partition_names_ is of type std::set so it's not an issue
            // required_devices_partition_names_ is of type std::set so it's not an issue
            // to emplace a partition twice. e.g., /vendor might be in both places:
            // to emplace a partition twice. e.g., /vendor might be in both places:
            //   - device_tree_vbmeta_parts_ = "vbmeta,boot,system,vendor"
            //   - device_tree_vbmeta_parts_ = "vbmeta,boot,system,vendor"
            //   - mount_fstab_recs_: /vendor_a
            //   - mount_fstab_recs_: /vendor_a
            required_devices_partition_names_.emplace(partition + ab_suffix);
            required_devices_partition_names_.emplace(partition_name);
        }
        }
    }
    }
    return true;
    return true;