Merge "Store userspace reboot info in /metadata" am: c0d11aa73a
Original change: https://android-review.googlesource.com/c/platform/system/core/+/1308213 Change-Id: I05886a93caf7baaa8a0baeec759c3b2b52d5a444
This commit is contained in:
commit
41aa2489ec
3 changed files with 21 additions and 2 deletions
|
|
@ -1173,6 +1173,10 @@ static Result<void> do_remount_userdata(const BuiltinArguments& args) {
|
||||||
}
|
}
|
||||||
// TODO(b/135984674): check that fstab contains /data.
|
// TODO(b/135984674): check that fstab contains /data.
|
||||||
if (auto rc = fs_mgr_remount_userdata_into_checkpointing(&fstab); rc < 0) {
|
if (auto rc = fs_mgr_remount_userdata_into_checkpointing(&fstab); rc < 0) {
|
||||||
|
std::string proc_mounts_output;
|
||||||
|
android::base::ReadFileToString("/proc/mounts", &proc_mounts_output, true);
|
||||||
|
android::base::WriteStringToFile(proc_mounts_output,
|
||||||
|
"/metadata/userspacereboot/mount_info.txt");
|
||||||
trigger_shutdown("reboot,mount_userdata_failed");
|
trigger_shutdown("reboot,mount_userdata_failed");
|
||||||
}
|
}
|
||||||
if (auto result = queue_fs_event(initial_mount_fstab_return_code, true); !result.ok()) {
|
if (auto result = queue_fs_event(initial_mount_fstab_return_code, true); !result.ok()) {
|
||||||
|
|
|
||||||
|
|
@ -804,11 +804,19 @@ static Result<void> DoUserspaceReboot() {
|
||||||
auto sigkill_timeout = GetMillisProperty("init.userspace_reboot.sigkill.timeoutmillis", 10s);
|
auto sigkill_timeout = GetMillisProperty("init.userspace_reboot.sigkill.timeoutmillis", 10s);
|
||||||
LOG(INFO) << "Timeout to terminate services: " << sigterm_timeout.count() << "ms "
|
LOG(INFO) << "Timeout to terminate services: " << sigterm_timeout.count() << "ms "
|
||||||
<< "Timeout to kill services: " << sigkill_timeout.count() << "ms";
|
<< "Timeout to kill services: " << sigkill_timeout.count() << "ms";
|
||||||
|
std::string services_file_name = "/metadata/userspacereboot/services.txt";
|
||||||
|
const int flags = O_RDWR | O_CREAT | O_SYNC | O_APPEND | O_CLOEXEC;
|
||||||
StopServicesAndLogViolations(stop_first, sigterm_timeout, true /* SIGTERM */);
|
StopServicesAndLogViolations(stop_first, sigterm_timeout, true /* SIGTERM */);
|
||||||
if (int r = StopServicesAndLogViolations(stop_first, sigkill_timeout, false /* SIGKILL */);
|
if (int r = StopServicesAndLogViolations(stop_first, sigkill_timeout, false /* SIGKILL */);
|
||||||
r > 0) {
|
r > 0) {
|
||||||
|
auto fd = unique_fd(TEMP_FAILURE_RETRY(open(services_file_name.c_str(), flags, 0666)));
|
||||||
|
android::base::WriteStringToFd("Post-data services still running: \n", fd);
|
||||||
|
for (const auto& s : stop_first) {
|
||||||
|
if (s->IsRunning()) {
|
||||||
|
android::base::WriteStringToFd(s->name() + "\n", fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
sub_reason = "sigkill";
|
sub_reason = "sigkill";
|
||||||
// TODO(b/135984674): store information about offending services for debugging.
|
|
||||||
return Error() << r << " post-data services are still running";
|
return Error() << r << " post-data services are still running";
|
||||||
}
|
}
|
||||||
if (auto result = KillZramBackingDevice(); !result.ok()) {
|
if (auto result = KillZramBackingDevice(); !result.ok()) {
|
||||||
|
|
@ -822,8 +830,14 @@ static Result<void> DoUserspaceReboot() {
|
||||||
if (int r = StopServicesAndLogViolations(GetDebuggingServices(true /* only_post_data */),
|
if (int r = StopServicesAndLogViolations(GetDebuggingServices(true /* only_post_data */),
|
||||||
sigkill_timeout, false /* SIGKILL */);
|
sigkill_timeout, false /* SIGKILL */);
|
||||||
r > 0) {
|
r > 0) {
|
||||||
|
auto fd = unique_fd(TEMP_FAILURE_RETRY(open(services_file_name.c_str(), flags, 0666)));
|
||||||
|
android::base::WriteStringToFd("Debugging services still running: \n", fd);
|
||||||
|
for (const auto& s : GetDebuggingServices(true)) {
|
||||||
|
if (s->IsRunning()) {
|
||||||
|
android::base::WriteStringToFd(s->name() + "\n", fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
sub_reason = "sigkill_debug";
|
sub_reason = "sigkill_debug";
|
||||||
// TODO(b/135984674): store information about offending services for debugging.
|
|
||||||
return Error() << r << " debugging services are still running";
|
return Error() << r << " debugging services are still running";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -510,6 +510,7 @@ on post-fs
|
||||||
mkdir /metadata/bootstat 0750 system log
|
mkdir /metadata/bootstat 0750 system log
|
||||||
mkdir /metadata/ota 0700 root system
|
mkdir /metadata/ota 0700 root system
|
||||||
mkdir /metadata/ota/snapshots 0700 root system
|
mkdir /metadata/ota/snapshots 0700 root system
|
||||||
|
mkdir /metadata/userspacereboot 0770 root system
|
||||||
|
|
||||||
mkdir /metadata/apex 0700 root system
|
mkdir /metadata/apex 0700 root system
|
||||||
mkdir /metadata/apex/sessions 0700 root system
|
mkdir /metadata/apex/sessions 0700 root system
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue