diff options
-rw-r--r-- | fs_mgr/fs_mgr_fstab.cpp | 32 | ||||
-rw-r--r-- | fs_mgr/include_fstab/fstab/fstab.h | 4 | ||||
-rw-r--r-- | init/first_stage_mount.cpp | 3 | ||||
-rw-r--r-- | init/selinux.cpp | 2 |
4 files changed, 21 insertions, 20 deletions
diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index 0c0862edb..796a39abf 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -711,19 +711,17 @@ bool ReadFstabFromFile(const std::string& path, Fstab* fstab) { TransformFstabForDsu(fstab, dsu_slot, Split(lp_names, ",")); } -#ifndef NO_SKIP_MOUNT - SkipMountingPartitions(fstab); -#endif + SkipMountingPartitions(fstab, false /* verbose */); EnableMandatoryFlags(fstab); return true; } // Returns fstab entries parsed from the device tree if they exist -bool ReadFstabFromDt(Fstab* fstab, bool log) { +bool ReadFstabFromDt(Fstab* fstab, bool verbose) { std::string fstab_buf = ReadFstabFromDt(); if (fstab_buf.empty()) { - if (log) LINFO << __FUNCTION__ << "(): failed to read fstab from dt"; + if (verbose) LINFO << __FUNCTION__ << "(): failed to read fstab from dt"; return false; } @@ -731,34 +729,36 @@ bool ReadFstabFromDt(Fstab* fstab, bool log) { fmemopen(static_cast<void*>(const_cast<char*>(fstab_buf.c_str())), fstab_buf.length(), "r"), fclose); if (!fstab_file) { - if (log) PERROR << __FUNCTION__ << "(): failed to create a file stream for fstab dt"; + if (verbose) PERROR << __FUNCTION__ << "(): failed to create a file stream for fstab dt"; return false; } if (!ReadFstabFile(fstab_file.get(), false, fstab)) { - if (log) { + if (verbose) { LERROR << __FUNCTION__ << "(): failed to load fstab from kernel:" << std::endl << fstab_buf; } return false; } -#ifndef NO_SKIP_MOUNT - SkipMountingPartitions(fstab); -#endif + SkipMountingPartitions(fstab, verbose); return true; } -#ifndef NO_SKIP_MOUNT +#ifdef NO_SKIP_MOUNT +bool SkipMountingPartitions(Fstab*, bool) { + return true; +} +#else // For GSI to skip mounting /product and /system_ext, until there are well-defined interfaces // between them and /system. Otherwise, the GSI flashed on /system might not be able to work with // device-specific /product and /system_ext. skip_mount.cfg belongs to system_ext partition because // only common files for all targets can be put into system partition. It is under // /system/system_ext because GSI is a single system.img that includes the contents of system_ext // partition and product partition under /system/system_ext and /system/product, respectively. -bool SkipMountingPartitions(Fstab* fstab) { - constexpr const char kSkipMountConfig[] = "/system/system_ext/etc/init/config/skip_mount.cfg"; +bool SkipMountingPartitions(Fstab* fstab, bool verbose) { + static constexpr char kSkipMountConfig[] = "/system/system_ext/etc/init/config/skip_mount.cfg"; std::string skip_config; auto save_errno = errno; @@ -777,7 +777,9 @@ bool SkipMountingPartitions(Fstab* fstab) { }); if (it == fstab->end()) continue; fstab->erase(it, fstab->end()); - LOG(INFO) << "Skip mounting partition: " << skip_mount_point; + if (verbose) { + LINFO << "Skip mounting partition: " << skip_mount_point; + } } return true; @@ -787,7 +789,7 @@ bool SkipMountingPartitions(Fstab* fstab) { // Loads the fstab file and combines with fstab entries passed in from device tree. bool ReadDefaultFstab(Fstab* fstab) { Fstab dt_fstab; - ReadFstabFromDt(&dt_fstab, false); + ReadFstabFromDt(&dt_fstab, false /* verbose */); *fstab = std::move(dt_fstab); diff --git a/fs_mgr/include_fstab/fstab/fstab.h b/fs_mgr/include_fstab/fstab/fstab.h index 2d4de0949..8ecf41bf3 100644 --- a/fs_mgr/include_fstab/fstab/fstab.h +++ b/fs_mgr/include_fstab/fstab/fstab.h @@ -97,9 +97,9 @@ struct FstabEntry { using Fstab = std::vector<FstabEntry>; bool ReadFstabFromFile(const std::string& path, Fstab* fstab); -bool ReadFstabFromDt(Fstab* fstab, bool log = true); +bool ReadFstabFromDt(Fstab* fstab, bool verbose = true); bool ReadDefaultFstab(Fstab* fstab); -bool SkipMountingPartitions(Fstab* fstab); +bool SkipMountingPartitions(Fstab* fstab, bool verbose = false); FstabEntry* GetEntryForMountPoint(Fstab* fstab, const std::string& path); // The Fstab can contain multiple entries for the same mount point with different configurations. diff --git a/init/first_stage_mount.cpp b/init/first_stage_mount.cpp index a11bb2837..3faf430da 100644 --- a/init/first_stage_mount.cpp +++ b/init/first_stage_mount.cpp @@ -97,7 +97,6 @@ class FirstStageMount { bool MountPartitions(); bool TrySwitchSystemAsRoot(); - bool TrySkipMountingPartitions(); bool IsDmLinearEnabled(); void GetSuperDeviceName(std::set<std::string>* devices); bool InitDmLinearBackingDevices(const android::fs_mgr::LpMetadata& metadata); @@ -534,7 +533,7 @@ bool FirstStageMount::TrySwitchSystemAsRoot() { bool FirstStageMount::MountPartitions() { if (!TrySwitchSystemAsRoot()) return false; - if (!SkipMountingPartitions(&fstab_)) return false; + if (!SkipMountingPartitions(&fstab_, true /* verbose */)) return false; for (auto current = fstab_.begin(); current != fstab_.end();) { // We've already mounted /system above. diff --git a/init/selinux.cpp b/init/selinux.cpp index 62c458674..2d3e06e52 100644 --- a/init/selinux.cpp +++ b/init/selinux.cpp @@ -658,7 +658,7 @@ void MountMissingSystemPartitions() { extra_fstab.emplace_back(std::move(entry)); } - SkipMountingPartitions(&extra_fstab); + SkipMountingPartitions(&extra_fstab, true /* verbose */); if (extra_fstab.empty()) { return; } |