From c9f8e5dfedca7b688f1844839b0e01dd3188459a Mon Sep 17 00:00:00 2001 From: Zim Date: Fri, 9 Aug 2019 20:02:49 +0100 Subject: [PATCH] Allow switching between sdcardfs and FUSE mounts This change is part of enabling upcoming platform changes that are described in the bug linked below. Bug: 135341433 Test: builds, boots successfully and external storage remains an sdcardfs mount by default and works correctly Test: cat /proc/1/mountinfo is unchanged Change-Id: Idf851b3a42910e0ce8fdd75daea1cce91dd1aa98 --- rootdir/init.rc | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/rootdir/init.rc b/rootdir/init.rc index 86d804285..4d34b67d3 100644 --- a/rootdir/init.rc +++ b/rootdir/init.rc @@ -121,6 +121,9 @@ on init mkdir /mnt/media_rw 0750 root media_rw mkdir /mnt/user 0755 root root mkdir /mnt/user/0 0755 root root + mkdir /mnt/user/0/self 0755 root root + mkdir /mnt/user/0/emulated 0755 root root + mkdir /mnt/user/0/emulated/0 0755 root root mkdir /mnt/expand 0771 system system mkdir /mnt/appfuse 0711 root root @@ -367,9 +370,6 @@ on post-fs # Once everything is setup, no need to modify /. # The bind+remount combination allows this to work in containers. mount rootfs rootfs / remount bind ro nodev - # Mount default storage into root namespace - mount none /mnt/runtime/default /storage bind rec - mount none none /storage slave rec # Make sure /sys/kernel/debug (if present) is labeled properly # Note that tracefs may be mounted under debug, so we need to cross filesystems @@ -642,6 +642,22 @@ on post-fs-data chown root system /dev/fscklogs/log chmod 0770 /dev/fscklogs/log +# Switch between sdcardfs and FUSE depending on persist property +# TODO: Move this to ro property before launch because FDE devices +# interact with persistent properties differently during boot +on zygote-start && property:persist.sys.fuse=true + # Mount default storage into root namespace + mount none /mnt/user/0 /storage bind rec + mount none none /storage slave rec +on zygote-start && property:persist.sys.fuse=false + # Mount default storage into root namespace + mount none /mnt/runtime/default /storage bind rec + mount none none /storage slave rec +on zygote-start && property:persist.sys.fuse="" + # Mount default storage into root namespace + mount none /mnt/runtime/default /storage bind rec + mount none none /storage slave rec + # It is recommended to put unnecessary data/ initialization from post-fs-data # to start-zygote in device's init.rc to unblock zygote start. on zygote-start && property:ro.crypto.state=unencrypted