Always unmount data and obb directory that mounted
Otherwise, when system removes user's volume, it will hang as there are mounts (obb and data mounts) still remain mounted in system. Bug: 187122943 Test: atest UserLifecycleTests#managedProfileUnlock_stopped, it's not blocked anymore Change-Id: Ic37985f98e6cbfe4fa38b981d3332c4dfc40c5b8
This commit is contained in:
parent
b2678b6654
commit
5f2a9fee66
1 changed files with 21 additions and 20 deletions
|
@ -194,27 +194,28 @@ status_t EmulatedVolume::unmountFuseBindMounts() {
|
|||
// Here we assume obb/data dirs is mounted as tmpfs, then it must be caused by
|
||||
// app data isolation.
|
||||
KillProcessesWithTmpfsMountPrefix(appObbDir);
|
||||
} else {
|
||||
std::string androidDataTarget(
|
||||
StringPrintf("/mnt/user/%d/%s/%d/Android/data", userId, label.c_str(), userId));
|
||||
|
||||
LOG(INFO) << "Unmounting " << androidDataTarget;
|
||||
auto status = UnmountTree(androidDataTarget);
|
||||
if (status != OK) {
|
||||
return status;
|
||||
}
|
||||
LOG(INFO) << "Unmounted " << androidDataTarget;
|
||||
|
||||
std::string androidObbTarget(
|
||||
StringPrintf("/mnt/user/%d/%s/%d/Android/obb", userId, label.c_str(), userId));
|
||||
|
||||
LOG(INFO) << "Unmounting " << androidObbTarget;
|
||||
status = UnmountTree(androidObbTarget);
|
||||
if (status != OK) {
|
||||
return status;
|
||||
}
|
||||
LOG(INFO) << "Unmounted " << androidObbTarget;
|
||||
}
|
||||
|
||||
// Always unmount data and obb dirs as they are mounted to lowerfs for speeding up access.
|
||||
std::string androidDataTarget(
|
||||
StringPrintf("/mnt/user/%d/%s/%d/Android/data", userId, label.c_str(), userId));
|
||||
|
||||
LOG(INFO) << "Unmounting " << androidDataTarget;
|
||||
auto status = UnmountTree(androidDataTarget);
|
||||
if (status != OK) {
|
||||
return status;
|
||||
}
|
||||
LOG(INFO) << "Unmounted " << androidDataTarget;
|
||||
|
||||
std::string androidObbTarget(
|
||||
StringPrintf("/mnt/user/%d/%s/%d/Android/obb", userId, label.c_str(), userId));
|
||||
|
||||
LOG(INFO) << "Unmounting " << androidObbTarget;
|
||||
status = UnmountTree(androidObbTarget);
|
||||
if (status != OK) {
|
||||
return status;
|
||||
}
|
||||
LOG(INFO) << "Unmounted " << androidObbTarget;
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue