Merge "fs_mgr: overlay check shared blocks for / if /system is not"

This commit is contained in:
Treehugger Robot 2019-04-12 05:38:03 +00:00 committed by Gerrit Code Review
commit 3569a8817d
2 changed files with 8 additions and 9 deletions

View File

@ -159,6 +159,9 @@ bool fs_mgr_overlayfs_enabled(FstabEntry* entry) {
auto save_errno = errno;
errno = 0;
auto has_shared_blocks = fs_mgr_has_shared_blocks(entry->mount_point, entry->blk_device);
if (!has_shared_blocks && (entry->mount_point == "/system")) {
has_shared_blocks = fs_mgr_has_shared_blocks("/", entry->blk_device);
}
// special case for first stage init for system as root (taimen)
if (!has_shared_blocks && (errno == ENOENT) && (entry->blk_device == "/dev/root")) {
has_shared_blocks = true;

View File

@ -371,17 +371,13 @@ int main(int argc, char* argv[]) {
continue;
}
}
PLOG(WARNING) << "failed to remount partition dev:" << blk_device << " mnt:" << mount_point;
// If errno = EROFS at this point, we are dealing with r/o
PLOG(ERROR) << "failed to remount partition dev:" << blk_device << " mnt:" << mount_point;
// If errno is EROFS at this point, we are dealing with r/o
// filesystem types like squashfs, erofs or ext4 dedupe. We will
// consider such a device that does not have CONFIG_OVERLAY_FS
// in the kernel as a misconfigured; except for ext4 dedupe.
if ((errno == EROFS) && can_reboot) {
const std::vector<std::string> msg = {"--fsck_unshare_blocks"};
std::string err;
if (write_bootloader_message(msg, &err)) reboot(true);
LOG(ERROR) << "Failed to set bootloader message: " << err;
errno = EROFS;
// in the kernel as a misconfigured.
if (errno == EROFS) {
LOG(ERROR) << "Consider providing all the dependencies to enable overlayfs";
}
retval = REMOUNT_FAILED;
}