summaryrefslogtreecommitdiff
path: root/init/service_parser.cpp
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2019-06-17 15:47:09 -0700
committerTom Cherry <tomcherry@google.com>2019-06-24 13:23:49 -0700
commit71bdf2820ee0fbf698840f84fdd1255dbf8d3aee (patch)
tree05a4ab73c56808bd3c2a5c2b5efb55e7e907ab53 /init/service_parser.cpp
parent99087decb9c9bb63ea20e18f6fa5ccbcefe8cf2b (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