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:
commit
14d8badf58
4 changed files with 21 additions and 20 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue