From 17572ca9e72aebae7f1ca5b8b4adf549a749333b Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 3 Dec 2021 13:57:10 -0800 Subject: [PATCH] Explain why snapuserd is a static binary. Static binaries are pretty rare (and usually a bad idea) but there's a rationale for this one, so we should record it. Test: treehugger Change-Id: I7fc5c32bbbec1ccf195d94eaedfb1bd718a364e1 --- fs_mgr/libsnapshot/snapuserd/Android.bp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fs_mgr/libsnapshot/snapuserd/Android.bp b/fs_mgr/libsnapshot/snapuserd/Android.bp index 93b0f7c28..4d8600782 100644 --- a/fs_mgr/libsnapshot/snapuserd/Android.bp +++ b/fs_mgr/libsnapshot/snapuserd/Android.bp @@ -61,12 +61,12 @@ cc_defaults { "dm-snapshot-merge/snapuserd_worker.cpp", "dm-snapshot-merge/snapuserd_readahead.cpp", "snapuserd_daemon.cpp", - "snapuserd_buffer.cpp", - "user-space-merge/snapuserd_core.cpp", - "user-space-merge/snapuserd_dm_user.cpp", - "user-space-merge/snapuserd_merge.cpp", - "user-space-merge/snapuserd_readahead.cpp", - "user-space-merge/snapuserd_transitions.cpp", + "snapuserd_buffer.cpp", + "user-space-merge/snapuserd_core.cpp", + "user-space-merge/snapuserd_dm_user.cpp", + "user-space-merge/snapuserd_merge.cpp", + "user-space-merge/snapuserd_readahead.cpp", + "user-space-merge/snapuserd_transitions.cpp", "user-space-merge/snapuserd_server.cpp", ], @@ -95,7 +95,14 @@ cc_binary { init_rc: [ "snapuserd.rc", ], + + // snapuserd is started during early boot by first-stage init. At that + // point, /system is mounted using the "dm-user" device-mapper kernel + // module. dm-user routes all I/O to userspace to be handled by + // snapuserd, which would lead to deadlock if we had to handle page + // faults for its code pages. static_executable: true, + system_shared_libs: [], ramdisk_available: true, vendor_ramdisk_available: true, @@ -111,7 +118,7 @@ cc_test { "dm-snapshot-merge/cow_snapuserd_test.cpp", "dm-snapshot-merge/snapuserd.cpp", "dm-snapshot-merge/snapuserd_worker.cpp", - "snapuserd_buffer.cpp", + "snapuserd_buffer.cpp", ], cflags: [ "-Wall",