Ignore class_{reset|start}_post_data on non-updatable APEX.
For devices that use FDE and don't support updatable APEXes, don't stop and restart all processes - there is no need and it only increases boot time for these devices. Additionally, some daemons have never been restarted in the past, and restarting them exposes certain issues. Bug: 137251597 Bug: 136777273 Bug: 135627804 Test: verified manually w/ ro.updatable.apex=false Change-Id: I9590f2c2cdfab0a49f39846896460305d44221ee
This commit is contained in:
parent
8987f061c4
commit
728586f5b2
1 changed files with 13 additions and 0 deletions
|
@ -42,6 +42,7 @@
|
|||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <ApexProperties.sysprop.h>
|
||||
#include <android-base/chrono_utils.h>
|
||||
#include <android-base/file.h>
|
||||
#include <android-base/logging.h>
|
||||
|
@ -130,6 +131,13 @@ static Result<void> do_class_start_post_data(const BuiltinArguments& args) {
|
|||
if (args.context != kInitContext) {
|
||||
return Error() << "command 'class_start_post_data' only available in init context";
|
||||
}
|
||||
static bool is_apex_updatable = android::sysprop::ApexProperties::updatable().value_or(false);
|
||||
|
||||
if (!is_apex_updatable) {
|
||||
// No need to start these on devices that don't support APEX, since they're not
|
||||
// stopped either.
|
||||
return {};
|
||||
}
|
||||
for (const auto& service : ServiceList::GetInstance()) {
|
||||
if (service->classnames().count(args[1])) {
|
||||
if (auto result = service->StartIfPostData(); !result) {
|
||||
|
@ -155,6 +163,11 @@ static Result<void> do_class_reset_post_data(const BuiltinArguments& args) {
|
|||
if (args.context != kInitContext) {
|
||||
return Error() << "command 'class_reset_post_data' only available in init context";
|
||||
}
|
||||
static bool is_apex_updatable = android::sysprop::ApexProperties::updatable().value_or(false);
|
||||
if (!is_apex_updatable) {
|
||||
// No need to stop these on devices that don't support APEX.
|
||||
return {};
|
||||
}
|
||||
ForEachServiceInClass(args[1], &Service::ResetIfPostData);
|
||||
return {};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue