adb: overlayfs failed to remount /system
Regression introduced commit bb1efbd1c6
By not first checking if overlayfs mount on /system is in /proc/mounts
remount fails to discover the override and take the selected action.
Test: adb-remount-test.sh
Bug: 109821005
Change-Id: I1f0bae22caae1bca84fc1e33b508b54d98f4ed5c
This commit is contained in:
parent
c68ac11c8a
commit
beb4cb8e43
2 changed files with 11 additions and 4 deletions
|
|
@ -97,8 +97,12 @@ static std::string find_mount(const char* dir, bool is_root) {
|
|||
}
|
||||
}
|
||||
|
||||
bool dev_is_overlayfs(const std::string& dev) {
|
||||
return (dev == "overlay") || (dev == "overlayfs");
|
||||
}
|
||||
|
||||
bool make_block_device_writable(const std::string& dev) {
|
||||
if ((dev == "overlay") || (dev == "overlayfs")) return true;
|
||||
if (dev_is_overlayfs(dev)) return true;
|
||||
int fd = unix_open(dev.c_str(), O_RDONLY | O_CLOEXEC);
|
||||
if (fd == -1) {
|
||||
return false;
|
||||
|
|
@ -161,6 +165,10 @@ static bool remount_partition(int fd, const char* dir) {
|
|||
return true;
|
||||
}
|
||||
bool is_root = strcmp(dir, "/") == 0;
|
||||
if (is_root && dev_is_overlayfs(find_mount("/system", false))) {
|
||||
dir = "/system";
|
||||
is_root = false;
|
||||
}
|
||||
std::string dev = find_mount(dir, is_root);
|
||||
if (is_root && dev.empty()) {
|
||||
// The fstab entry will be /system if the device switched roots during
|
||||
|
|
|
|||
|
|
@ -274,9 +274,8 @@ H=`echo "${D}" | head -1` &&
|
|||
echo "${D}" | grep "^overlay .* /system\$" >/dev/null ||
|
||||
die "overlay takeover after remount"
|
||||
!(adb_sh grep "^overlay " /proc/mounts </dev/null | grep " overlay ro,") &&
|
||||
!(adb_sh grep " rw," /proc/mounts </dev/null |
|
||||
skip_administrative_mounts) ||
|
||||
die "remount overlayfs missed a spot"
|
||||
!(adb_sh grep " rw," /proc/mounts </dev/null | skip_administrative_mounts) ||
|
||||
die "remount overlayfs missed a spot (ro)"
|
||||
|
||||
adb_su "sed -n '1,/overlay \\/system/p' /proc/mounts" </dev/null |
|
||||
skip_administrative_mounts |
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue