diff options
author | Tom Cherry <tomcherry@google.com> | 2019-06-17 15:47:09 -0700 |
---|---|---|
committer | Tom Cherry <tomcherry@google.com> | 2019-06-24 13:23:49 -0700 |
commit | 71bdf2820ee0fbf698840f84fdd1255dbf8d3aee (patch) | |
tree | 05a4ab73c56808bd3c2a5c2b5efb55e7e907ab53 /init/service_parser.cpp | |
parent | 99087decb9c9bb63ea20e18f6fa5ccbcefe8cf2b (diff) |
init: Handle properties in the background of calling fs_mgr
It's been a long standing problem that init calls fs_mgr functions
synchronously and therefore stops handling properties, which causes
deadlocks if either fs_mgr, or vdc, or vold attempt to set
properties.
Previous work, b/21904461, shows that there is a large performance
penalty for adding any amount of locking to properties, so moving
property service into its own thread generically is not a viable
option. However, we can be sure that init is not setting properties
while the fs_mgr functions are running, so we can poll the property
socket in a thread while we call these functions.
The other alternative would have been to separate the fs_mgr functions
into smaller pieces and revisit the main init loop between each
piece. Unfortunately, this would be difficult, since
fs_mgr_mount_all() calls out to different processes via logwrapper,
which synchronously polls on a logging FD from the child, among other
complexities that would make this strategy much more difficult than it
would be worth.
Bug: 21904461
Test: device boots, including when setting property in
fs_mgr_mount_all()
Change-Id: Ib0b7123024035884f9d90f9b489c1e2f5a2e1707
Diffstat (limited to 'init/service_parser.cpp')
0 files changed, 0 insertions, 0 deletions