From 78fcd5049bcd45df134d37dc060f61326b7a193f Mon Sep 17 00:00:00 2001 From: shafik Date: Wed, 25 Sep 2019 13:50:04 +0100 Subject: [PATCH] Snapshot persist.sys.fuse into sys.fuse_snapshot This will allow us to receive values from server flags and store them in persist.sys.fuse without risking flag consistency during a boot. Test: manual - flip persist.sys.fuse both ways and make sure FuseDaemon works as expected. Bug: 140803239 Change-Id: I4424770926f98bccda06dab6a447ee5637e5eb6e --- core/java/android/os/storage/StorageManager.java | 5 +++++ .../java/com/android/server/StorageManagerService.java | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 5b9205d168985..351462f8d68e8 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -153,6 +153,11 @@ public class StorageManager { public static final String PROP_ISOLATED_STORAGE = "persist.sys.isolated_storage"; /** {@hide} */ public static final String PROP_ISOLATED_STORAGE_SNAPSHOT = "sys.isolated_storage_snapshot"; + /** {@hide} */ + public static final String PROP_FUSE = "persist.sys.fuse"; + /** {@hide} */ + public static final String PROP_FUSE_SNAPSHOT = "sys.fuse_snapshot"; + /** {@hide} */ public static final String UUID_PRIVATE_INTERNAL = null; diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index f70d511759f09..34111a92b66ea 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -197,7 +197,7 @@ class StorageManagerService extends IStorageManager.Stub "persist.sys.zram_enabled"; private static final boolean IS_FUSE_ENABLED = - SystemProperties.getBoolean("persist.sys.fuse", false); + SystemProperties.getBoolean(StorageManager.PROP_FUSE, false); private static final boolean ENABLE_ISOLATED_STORAGE = StorageManager.hasIsolatedStorage(); @@ -1526,6 +1526,9 @@ class StorageManagerService extends IStorageManager.Stub SystemProperties.set(StorageManager.PROP_ISOLATED_STORAGE_SNAPSHOT, Boolean.toString( SystemProperties.getBoolean(StorageManager.PROP_ISOLATED_STORAGE, true))); + SystemProperties.set(StorageManager.PROP_FUSE_SNAPSHOT, Boolean.toString( + SystemProperties.getBoolean(StorageManager.PROP_FUSE, false))); + mContext = context; mResolver = mContext.getContentResolver(); @@ -1858,7 +1861,7 @@ class StorageManagerService extends IStorageManager.Stub // This means the mountUserId on such volumes is USER_NULL. This breaks fuse which // requires a valid user to mount a volume. Create individual volumes per user in vold // and remove this property check - int userId = SystemProperties.getBoolean("persist.sys.fuse", false) + int userId = SystemProperties.getBoolean(StorageManager.PROP_FUSE_SNAPSHOT, false) ? mCurrentUserId : vol.mountUserId; return mVold.mount(vol.id, vol.mountFlags, userId); } catch (Exception e) {