adb: remount for /system as root
We can not mount overlayfs on root / as it will intercept all file transactions. Thus must remount /system instead. Test: manual Bug: 109821005 Bug: 115751838 Change-Id: Idf646b8c1ca8a0d006bf64e23a76a7e909f9162a
This commit is contained in:
parent
f35db9b11b
commit
04aa426c5f
1 changed files with 7 additions and 1 deletions
|
@ -146,6 +146,10 @@ static bool remount_partition(int fd, const char* dir) {
|
|||
return true;
|
||||
}
|
||||
bool is_root = strcmp(dir, "/") == 0;
|
||||
if (is_root && !find_mount("/system", false).empty()) {
|
||||
dir = "/system";
|
||||
is_root = false;
|
||||
}
|
||||
std::string dev = find_mount(dir, is_root);
|
||||
// Even if the device for the root is not found, we still try to remount it
|
||||
// as rw. This typically only happens when running Android in a container:
|
||||
|
@ -226,7 +230,9 @@ void remount_service(unique_fd fd, const std::string& cmd) {
|
|||
|
||||
// Find partitions that are deduplicated, and can be un-deduplicated.
|
||||
std::set<std::string> dedup;
|
||||
for (const auto& partition : partitions) {
|
||||
for (const auto& part : partitions) {
|
||||
auto partition = part;
|
||||
if ((part == "/") && !find_mount("/system", false).empty()) partition = "/system";
|
||||
std::string dev = find_mount(partition.c_str(), partition == "/");
|
||||
if (dev.empty() || !fs_mgr_has_shared_blocks(partition, dev)) {
|
||||
continue;
|
||||
|
|
Loading…
Reference in a new issue