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
Loading
Please register or sign in to comment