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

Commit e748fb79 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

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

Merge "remount: Factor some code out of fs_mgr_overlayfs_mount_all()." am: ce8ab2b5 am: 9b1a646b am: 42a9765b

Change-Id: I379d0203b25e6f446d78c0bcc5ac608fe2b35a4e
parents 0acc8213 42a9765b
Loading
Loading
Loading
Loading
+20 −13
Original line number Original line Diff line number Diff line
@@ -1066,6 +1066,25 @@ Fstab fs_mgr_overlayfs_candidate_list(const Fstab& fstab) {
    return candidates;
    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) {
bool fs_mgr_overlayfs_mount_all(Fstab* fstab) {
    auto ret = false;
    auto ret = false;
    if (fs_mgr_overlayfs_invalid()) return ret;
    if (fs_mgr_overlayfs_invalid()) return ret;
@@ -1080,19 +1099,7 @@ bool fs_mgr_overlayfs_mount_all(Fstab* fstab) {
        }
        }
        if (scratch_can_be_mounted) {
        if (scratch_can_be_mounted) {
            scratch_can_be_mounted = false;
            scratch_can_be_mounted = false;
            auto scratch_device = fs_mgr_overlayfs_scratch_device();
            TryMountScratch();
            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);
                    }
                }
            }
        }
        }
        if (fs_mgr_overlayfs_mount(mount_point)) ret = true;
        if (fs_mgr_overlayfs_mount(mount_point)) ret = true;
    }
    }