Merge "Store userspace reboot info in /metadata"
This commit is contained in:
commit
c0d11aa73a
|
@ -1173,6 +1173,10 @@ static Result<void> do_remount_userdata(const BuiltinArguments& args) {
|
|||
}
|
||||
// TODO(b/135984674): check that fstab contains /data.
|
||||
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");
|
||||
}
|
||||
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);
|
||||
LOG(INFO) << "Timeout to terminate services: " << sigterm_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 */);
|
||||
if (int r = StopServicesAndLogViolations(stop_first, sigkill_timeout, false /* SIGKILL */);
|
||||
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";
|
||||
// TODO(b/135984674): store information about offending services for debugging.
|
||||
return Error() << r << " post-data services are still running";
|
||||
}
|
||||
if (auto result = KillZramBackingDevice(); !result.ok()) {
|
||||
|
@ -822,8 +830,14 @@ static Result<void> DoUserspaceReboot() {
|
|||
if (int r = StopServicesAndLogViolations(GetDebuggingServices(true /* only_post_data */),
|
||||
sigkill_timeout, false /* SIGKILL */);
|
||||
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";
|
||||
// TODO(b/135984674): store information about offending services for debugging.
|
||||
return Error() << r << " debugging services are still running";
|
||||
}
|
||||
{
|
||||
|
|
|
@ -510,6 +510,7 @@ on post-fs
|
|||
mkdir /metadata/bootstat 0750 system log
|
||||
mkdir /metadata/ota 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/sessions 0700 root system
|
||||
|
|
Loading…
Reference in New Issue