diff options
author | Zimuzo Ezeozue <zezeozue@google.com> | 2020-01-21 18:16:19 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-01-21 18:16:19 +0000 |
commit | dbd6e739017ceb23c752b6961c1f3eca535d18b0 (patch) | |
tree | b8c229c7bbb65301c491b6b0881a0c1139ac9299 | |
parent | 0a8400ecba0eaca74b6543a3e9b91fbb27dba65e (diff) | |
parent | 69e9c09df469e762af86e411e8e7a1f3b0585f87 (diff) |
Merge "Refactor FUSE flag check logic"
-rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index f5e342323831..32830aeacf06 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -37,6 +37,8 @@ import static android.os.storage.OnObbStateChangeListener.ERROR_NOT_MOUNTED; import static android.os.storage.OnObbStateChangeListener.ERROR_PERMISSION_DENIED; import static android.os.storage.OnObbStateChangeListener.MOUNTED; import static android.os.storage.OnObbStateChangeListener.UNMOUNTED; +import static android.os.storage.StorageManager.PROP_FUSE; +import static android.os.storage.StorageManager.PROP_SETTINGS_FUSE; import static com.android.internal.util.XmlUtils.readIntAttribute; import static com.android.internal.util.XmlUtils.readLongAttribute; @@ -1617,7 +1619,10 @@ class StorageManagerService extends IStorageManager.Stub SystemProperties.set(StorageManager.PROP_ISOLATED_STORAGE_SNAPSHOT, Boolean.toString( SystemProperties.getBoolean(StorageManager.PROP_ISOLATED_STORAGE, true))); - mIsFuseEnabled = SystemProperties.getBoolean(StorageManager.PROP_FUSE, false); + // If there is no value in the property yet (first boot after data wipe), this value may be + // incorrect until #updateFusePropFromSettings where we set the correct value and reboot if + // different + mIsFuseEnabled = SystemProperties.getBoolean(PROP_FUSE, false); mContext = context; mResolver = mContext.getContentResolver(); mCallbacks = new Callbacks(FgThread.get().getLooper()); @@ -1680,25 +1685,24 @@ class StorageManagerService extends IStorageManager.Stub * and updates PROP_FUSE (reboots if changed). */ private void updateFusePropFromSettings() { - String settingsFuseFlag = SystemProperties.get(StorageManager.PROP_SETTINGS_FUSE); - Slog.d(TAG, "The value of Settings Fuse Flag is " - + (settingsFuseFlag == null || settingsFuseFlag.isEmpty() - ? "null" : settingsFuseFlag)); - // Set default value of PROP_SETTINGS_FUSE and PROP_FUSE if it - // is unset (neither true nor false, this happens only on the first boot - // after wiping data partition). - if (settingsFuseFlag == null || settingsFuseFlag.isEmpty()) { - SystemProperties.set(StorageManager.PROP_SETTINGS_FUSE, "false"); - SystemProperties.set(StorageManager.PROP_FUSE, "false"); + boolean defaultFuseFlag = false; + boolean settingsFuseFlag = SystemProperties.getBoolean(PROP_SETTINGS_FUSE, defaultFuseFlag); + Slog.d(TAG, "FUSE flags. Settings: " + settingsFuseFlag + ". Default: " + defaultFuseFlag); + + if (TextUtils.isEmpty(SystemProperties.get(PROP_SETTINGS_FUSE))) { + // Set default value of PROP_SETTINGS_FUSE and PROP_FUSE if it + // is unset (neither true nor false). + // This happens only on the first boot after wiping data partition + SystemProperties.set(PROP_SETTINGS_FUSE, Boolean.toString(defaultFuseFlag)); + SystemProperties.set(PROP_FUSE, Boolean.toString(defaultFuseFlag)); return; } - if (!SystemProperties.get(StorageManager.PROP_FUSE).equals(settingsFuseFlag)) { - Slog.d(TAG, "Set persist.sys.fuse to " + settingsFuseFlag); - SystemProperties.set(StorageManager.PROP_FUSE, settingsFuseFlag); + if (mIsFuseEnabled != settingsFuseFlag) { + Slog.i(TAG, "Toggling persist.sys.fuse to " + settingsFuseFlag); + SystemProperties.set(PROP_FUSE, Boolean.toString(settingsFuseFlag)); // Perform hard reboot to kick policy into place - mContext.getSystemService(PowerManager.class).reboot("Reboot device for FUSE system" - + "property change to take effect"); + mContext.getSystemService(PowerManager.class).reboot("fuse_prop"); } } |