fs_mgr: Add fs_mgr_overlayfs_is_setup()
Provide a means to determine if overlayfs is currently active with fs_mgr_overlayfs_is_setup(). Search for current clues in the system that the overrides are in play. If /mnt/scratch/ is mounted, that may be enough of a smoking gun because the resource itself may interfere with operations. Related to update_engine calling this function to reject performing an OTA as its operations are incompatible with the overrides. Test: adb-remount-test.sh Bug: 120034852 Change-Id: I641163b1559c1a83fe7d0c336d04c10e9956ad3a
This commit is contained in:
parent
bb72b808f4
commit
dd748aa41c
|
@ -89,6 +89,12 @@ Caveats
|
|||
if higher than 4.6.
|
||||
- *adb enable-verity* will free up overlayfs and as a bonus the
|
||||
device will be reverted pristine to before any content was updated.
|
||||
Update engine does not take advantage of this, will perform a full OTA.
|
||||
- Update engine will not run if *fs_mgr_overlayfs_is_setup*() reports
|
||||
true as adb remount overrides are incompatable with an OTA for
|
||||
multiple reasons.
|
||||
NB: This is not a problem for fastbootd or recovery as overrides are
|
||||
disabled for those special boot scenarios.
|
||||
- If dynamic partitions runs out of space, resizing a logical
|
||||
partition larger may fail because of the scratch partition.
|
||||
If this happens, either fastboot flashall or adb enable-verity can
|
||||
|
|
|
@ -96,6 +96,10 @@ bool fs_mgr_overlayfs_teardown(const char*, bool* change) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool fs_mgr_overlayfs_is_setup() {
|
||||
return false;
|
||||
}
|
||||
|
||||
#else // ALLOW_ADBD_DISABLE_VERITY == 0
|
||||
|
||||
namespace {
|
||||
|
@ -924,6 +928,17 @@ bool fs_mgr_overlayfs_teardown(const char* mount_point, bool* change) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
bool fs_mgr_overlayfs_is_setup() {
|
||||
if (fs_mgr_overlayfs_already_mounted(kScratchMountPoint, false)) return true;
|
||||
std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(),
|
||||
fs_mgr_free_fstab);
|
||||
if (fs_mgr_overlayfs_invalid(fstab.get())) return false;
|
||||
for (const auto& mount_point : fs_mgr_candidate_list(fstab.get())) {
|
||||
if (fs_mgr_overlayfs_already_mounted(mount_point)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif // ALLOW_ADBD_DISABLE_VERITY != 0
|
||||
|
||||
bool fs_mgr_has_shared_blocks(const std::string& mount_point, const std::string& dev) {
|
||||
|
|
|
@ -29,6 +29,7 @@ std::vector<std::string> fs_mgr_overlayfs_required_devices(
|
|||
bool fs_mgr_overlayfs_setup(const char* backing = nullptr, const char* mount_point = nullptr,
|
||||
bool* change = nullptr);
|
||||
bool fs_mgr_overlayfs_teardown(const char* mount_point = nullptr, bool* change = nullptr);
|
||||
bool fs_mgr_overlayfs_is_setup();
|
||||
bool fs_mgr_has_shared_blocks(const std::string& mount_point, const std::string& dev);
|
||||
std::string fs_mgr_get_context(const std::string& mount_point);
|
||||
|
||||
|
|
Loading…
Reference in New Issue