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

Commit 9b1a646b authored by David Anderson's avatar David Anderson Committed by android-build-merger
Browse files

Merge "remount: Factor some code out of fs_mgr_overlayfs_mount_all()."

am: ce8ab2b5

Change-Id: I8b7cb79f7c074d1e99383d3c534ff93503dd5330
parents 275f6c44 ce8ab2b5
Loading
Loading
Loading
Loading
+20 −13
Original line number Diff line number Diff line
@@ -1066,6 +1066,25 @@ Fstab fs_mgr_overlayfs_candidate_list(const Fstab& fstab) {
    return candidates;
}

static void TryMountScratch() {
    auto scratch_device = fs_mgr_overlayfs_scratch_device();
    if (!fs_mgr_overlayfs_scratch_can_be_mounted(scratch_device)) {
        return;
    }
    if (!WaitForFile(scratch_device, 10s)) {
        return;
    }
    const auto mount_type = fs_mgr_overlayfs_scratch_mount_type();
    if (!fs_mgr_overlayfs_mount_scratch(scratch_device, mount_type, true /* readonly */)) {
        return;
    }
    auto has_overlayfs_dir = fs_mgr_access(kScratchMountPoint + kOverlayTopDir);
    fs_mgr_overlayfs_umount_scratch();
    if (has_overlayfs_dir) {
        fs_mgr_overlayfs_mount_scratch(scratch_device, mount_type);
    }
}

bool fs_mgr_overlayfs_mount_all(Fstab* fstab) {
    auto ret = false;
    if (fs_mgr_overlayfs_invalid()) return ret;
@@ -1080,19 +1099,7 @@ bool fs_mgr_overlayfs_mount_all(Fstab* fstab) {
        }
        if (scratch_can_be_mounted) {
            scratch_can_be_mounted = false;
            auto scratch_device = fs_mgr_overlayfs_scratch_device();
            if (fs_mgr_overlayfs_scratch_can_be_mounted(scratch_device) &&
                WaitForFile(scratch_device, 10s)) {
                const auto mount_type = fs_mgr_overlayfs_scratch_mount_type();
                if (fs_mgr_overlayfs_mount_scratch(scratch_device, mount_type,
                                                   true /* readonly */)) {
                    auto has_overlayfs_dir = fs_mgr_access(kScratchMountPoint + kOverlayTopDir);
                    fs_mgr_overlayfs_umount_scratch();
                    if (has_overlayfs_dir) {
                        fs_mgr_overlayfs_mount_scratch(scratch_device, mount_type);
                    }
                }
            }
            TryMountScratch();
        }
        if (fs_mgr_overlayfs_mount(mount_point)) ret = true;
    }