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

Commit c651b4c1 authored by Mark Salyzyn's avatar Mark Salyzyn Committed by android-build-merger
Browse files

Merge "fs_mgr: overlay: device tree and system as root" am: 5e948562 am: a12916e4

am: 81b8b8ab

Change-Id: I1ce21f16dc1eaae5dc6746e8f6a88765023697a8
parents 84d3d3f4 81b8b8ab
Loading
Loading
Loading
Loading
+19 −8
Original line number Original line Diff line number Diff line
@@ -219,6 +219,15 @@ bool fs_mgr_overlayfs_already_mounted(const std::string& mount_point) {
    return false;
    return false;
}
}


bool fs_mgr_overlayfs_verity_enabled(const std::string& basename_mount_point) {
    auto found = false;
    fs_mgr_update_verity_state(
            [&basename_mount_point, &found](fstab_rec*, const char* mount_point, int, int) {
                if (mount_point && (basename_mount_point == mount_point)) found = true;
            });
    return found;
}

bool fs_mgr_wants_overlayfs(const fstab_rec* fsrec) {
bool fs_mgr_wants_overlayfs(const fstab_rec* fsrec) {
    if (!fsrec) return false;
    if (!fsrec) return false;


@@ -242,14 +251,7 @@ bool fs_mgr_wants_overlayfs(const fstab_rec* fsrec) {


    if (!fs_mgr_overlayfs_enabled(fsrec)) return false;
    if (!fs_mgr_overlayfs_enabled(fsrec)) return false;


    // Verity enabled?
    return !fs_mgr_overlayfs_verity_enabled(android::base::Basename(fsrec_mount_point));
    const auto basename_mount_point(android::base::Basename(fsrec_mount_point));
    auto found = false;
    fs_mgr_update_verity_state(
            [&basename_mount_point, &found](fstab_rec*, const char* mount_point, int, int) {
                if (mount_point && (basename_mount_point == mount_point)) found = true;
            });
    return !found;
}
}


bool fs_mgr_rm_all(const std::string& path, bool* change = nullptr) {
bool fs_mgr_rm_all(const std::string& path, bool* change = nullptr) {
@@ -395,6 +397,15 @@ std::vector<std::string> fs_mgr_candidate_list(const fstab* fstab,
        }
        }
        if (!duplicate_or_more_specific) mounts.emplace_back(new_mount_point);
        if (!duplicate_or_more_specific) mounts.emplace_back(new_mount_point);
    }
    }
    // if not itemized /system or /, system as root, fake up
    // fs_mgr_wants_overlayfs evaluation of /system as candidate.

    if ((std::find(mounts.begin(), mounts.end(), "/system") == mounts.end()) &&
        !fs_mgr_get_entry_for_mount_point(const_cast<struct fstab*>(fstab), "/") &&
        !fs_mgr_get_entry_for_mount_point(const_cast<struct fstab*>(fstab), "/system") &&
        !fs_mgr_overlayfs_verity_enabled("system")) {
        mounts.emplace_back("/system");
    }
    return mounts;
    return mounts;
}
}