Merge "fs_mgr: Suppress SkipMountingPartitions log in ReadFstabFromFile" am: a2b662cf23

Original change: https://android-review.googlesource.com/c/platform/system/core/+/1662019

Change-Id: If9f26afce00a670ddae8ebe950f42c2ca5b33e54
This commit is contained in:
Yo Chiang 2021-04-02 05:48:30 +00:00 committed by Automerger Merge Worker
commit 14d8badf58
4 changed files with 21 additions and 20 deletions

View file

@ -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);

View file

@ -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.

View file

@ -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.

View file

@ -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;
}