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

Commit 9eaed18a authored by Tom Cherry's avatar Tom Cherry Committed by android-build-merger
Browse files

Merge "Remove the rest of users of the old style fstab"

am: 286684f8

Change-Id: Ice6d3023349398b2ba5ed99588cc2f457377fb6d
parents 8f13a7f4 286684f8
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -75,16 +75,20 @@ static std::string find_proc_mount(const char* dir) {

// Returns the device used to mount a directory in the fstab.
static std::string find_fstab_mount(const char* dir) {
    std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(),
                                                               fs_mgr_free_fstab);
    struct fstab_rec* rec = fs_mgr_get_entry_for_mount_point(fstab.get(), dir);
    if (!rec) {
    Fstab fstab;
    if (!ReadDefaultFstab(&fstab)) {
        return "";
    }

    auto entry = std::find_if(fstab.begin(), fstab.end(),
                              [&dir](const auto& entry) { return entry.mount_point == dir; });
    if (entry == fstab.end()) {
        return "";
    }
    if (fs_mgr_is_logical(rec)) {
        fs_mgr_update_logical_partition(rec);
    if (entry->fs_mgr_flags.logical) {
        fs_mgr_update_logical_partition(&(*entry));
    }
    return rec->blk_device;
    return entry->blk_device;
}

// The proc entry for / is full of lies, so check fstab instead.
+6 −8
Original line number Diff line number Diff line
@@ -41,8 +41,6 @@

#include "fec/io.h"

struct fstab *fstab;

#ifdef ALLOW_ADBD_DISABLE_VERITY
static const bool kAllowDisableVerity = true;
#else
@@ -213,18 +211,18 @@ void set_verity_enabled_state_service(unique_fd fd, bool enable) {
        // Not using AVB - assume VB1.0.

        // read all fstab entries at once from all sources
        if (!fstab) fstab = fs_mgr_read_fstab_default();
        if (!fstab) {
        Fstab fstab;
        if (!ReadDefaultFstab(&fstab)) {
            WriteFdExactly(fd.get(), "Failed to read fstab\n");
            suggest_run_adb_root(fd.get());
            return;
        }

        // Loop through entries looking for ones that verity manages.
        for (int i = 0; i < fstab->num_entries; i++) {
            if (fs_mgr_is_verified(&fstab->recs[i])) {
                if (set_verity_enabled_state(fd.get(), fstab->recs[i].blk_device,
                                             fstab->recs[i].mount_point, enable)) {
        for (const auto& entry : fstab) {
            if (entry.fs_mgr_flags.verify) {
                if (set_verity_enabled_state(fd.get(), entry.blk_device.c_str(),
                                             entry.mount_point.c_str(), enable)) {
                    any_changed = true;
                }
            }
+10 −8
Original line number Diff line number Diff line
@@ -52,15 +52,17 @@ void WipeOverlayfsForPartition(FastbootDevice* device, const std::string& partit
    // Following appears to have a first time 2% impact on flashing speeds.

    // Convert partition_name to a validated mount point and wipe.
    std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(),
                                                               fs_mgr_free_fstab);
    for (auto i = 0; i < fstab->num_entries; i++) {
        const auto mount_point = fstab->recs[i].mount_point;
        if (!mount_point) continue;
        auto partition = android::base::Basename(mount_point);
        if ("/"s == mount_point) partition = "system";
    Fstab fstab;
    ReadDefaultFstab(&fstab);

    for (const auto& entry : fstab) {
        auto partition = android::base::Basename(entry.mount_point);
        if ("/" == entry.mount_point) {
            partition = "system";
        }

        if ((partition + device->GetCurrentSlot()) == partition_name) {
            fs_mgr_overlayfs_teardown(mount_point);
            fs_mgr_overlayfs_teardown(entry.mount_point.c_str());
        }
    }
}
+0 −13
Original line number Diff line number Diff line
@@ -889,19 +889,6 @@ bool fs_mgr_update_logical_partition(FstabEntry* entry) {
    return true;
}

bool fs_mgr_update_logical_partition(struct fstab_rec* rec) {
    auto entry = FstabRecToFstabEntry(rec);

    if (!fs_mgr_update_logical_partition(&entry)) {
        return false;
    }

    free(rec->blk_device);
    rec->blk_device = strdup(entry.blk_device.c_str());

    return true;
}

class CheckpointManager {
  public:
    CheckpointManager(int needs_checkpoint = -1) : needs_checkpoint_(needs_checkpoint) {}
+0 −1
Original line number Diff line number Diff line
@@ -79,7 +79,6 @@ bool fs_mgr_update_verity_state(
        std::function<void(const std::string& mount_point, int mode)> callback);
bool fs_mgr_swapon_all(const Fstab& fstab);
bool fs_mgr_update_logical_partition(FstabEntry* entry);
bool fs_mgr_update_logical_partition(struct fstab_rec* rec);

int fs_mgr_do_format(const FstabEntry& entry, bool reserve_footer);
int fs_mgr_do_format(fstab_rec* rec, bool reserve_footer);