Merge "Skip unnecessary sleep during shutdown"
am: e3e4ec7c97
Change-Id: Iaa8af758ebcb2c7a300dde32902d14a11b6c53d6
This commit is contained in:
commit
57f94aa4bc
1 changed files with 15 additions and 15 deletions
|
|
@ -267,8 +267,6 @@ static void DumpUmountDebuggingInfo(bool dump_all) {
|
||||||
|
|
||||||
static UmountStat UmountPartitions(std::chrono::milliseconds timeout) {
|
static UmountStat UmountPartitions(std::chrono::milliseconds timeout) {
|
||||||
Timer t;
|
Timer t;
|
||||||
UmountStat stat = UMOUNT_STAT_TIMEOUT;
|
|
||||||
int retry = 0;
|
|
||||||
/* data partition needs all pending writes to be completed and all emulated partitions
|
/* data partition needs all pending writes to be completed and all emulated partitions
|
||||||
* umounted.If the current waiting is not good enough, give
|
* umounted.If the current waiting is not good enough, give
|
||||||
* up and leave it to e2fsck after reboot to fix it.
|
* up and leave it to e2fsck after reboot to fix it.
|
||||||
|
|
@ -280,25 +278,27 @@ static UmountStat UmountPartitions(std::chrono::milliseconds timeout) {
|
||||||
return UMOUNT_STAT_ERROR;
|
return UMOUNT_STAT_ERROR;
|
||||||
}
|
}
|
||||||
if (block_devices.size() == 0) {
|
if (block_devices.size() == 0) {
|
||||||
stat = UMOUNT_STAT_SUCCESS;
|
return UMOUNT_STAT_SUCCESS;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if ((timeout < t.duration()) && retry > 0) { // try umount at least once
|
bool unmount_done = true;
|
||||||
stat = UMOUNT_STAT_TIMEOUT;
|
if (emulated_devices.size() > 0) {
|
||||||
break;
|
unmount_done = std::all_of(emulated_devices.begin(), emulated_devices.end(),
|
||||||
|
[](auto& entry) { return entry.Umount(); });
|
||||||
|
if (unmount_done) {
|
||||||
|
sync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (emulated_devices.size() > 0 &&
|
unmount_done = std::all_of(block_devices.begin(), block_devices.end(),
|
||||||
std::all_of(emulated_devices.begin(), emulated_devices.end(),
|
[](auto& entry) { return entry.Umount(); }) &&
|
||||||
[](auto& entry) { return entry.Umount(); })) {
|
unmount_done;
|
||||||
sync();
|
if (unmount_done) {
|
||||||
|
return UMOUNT_STAT_SUCCESS;
|
||||||
}
|
}
|
||||||
for (auto& entry : block_devices) {
|
if ((timeout < t.duration())) { // try umount at least once
|
||||||
entry.Umount();
|
return UMOUNT_STAT_TIMEOUT;
|
||||||
}
|
}
|
||||||
retry++;
|
|
||||||
std::this_thread::sleep_for(100ms);
|
std::this_thread::sleep_for(100ms);
|
||||||
}
|
}
|
||||||
return stat;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void KillAllProcesses() { android::base::WriteStringToFile("i", "/proc/sysrq-trigger"); }
|
static void KillAllProcesses() { android::base::WriteStringToFile("i", "/proc/sysrq-trigger"); }
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue