Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 925c03fa authored by Shintaro Kawamura's avatar Shintaro Kawamura
Browse files

Switch zram management based on mmd AConfig flag and mmd.zram.enabled system property

During launch of mmd, Android devices has 2 systems for zram management
which are mutally exclusive: mmd and old system (swapon_all +
ZramWriteback.java in system_server).

MmdProperties.mmd_zram_enabled() is the wrapper API for the
"mmd.zram.enabled" system property.

If both "mmd_enabled" AConfig flag and "mmd.zram.enabled" system
property are enabled, mmd manages zram. Otherwise the old system manages
zram (though zram may not be utilized on the device).

This also pushes refreshZramSettings() to the another branch from mmd
because mmd system does not support enabling zram via Settings for
experiments.

Bug: 393481329
Test: manual

Change-Id: Ied2a36a3cddd4fe7936b5476c05d3442ec439431
parent 849150a1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -243,6 +243,7 @@ java_library_static {
        "aconfig_new_storage_flags_lib",
        "powerstats_flags_lib",
        "locksettings_flags_lib",
        "MmdProperties",
        "mmd_flags_lib",
    ],
    javac_shard_size: 50,
+15 −14
Original line number Diff line number Diff line
@@ -126,6 +126,7 @@ import android.provider.Downloads;
import android.provider.MediaStore;
import android.provider.Settings;
import android.service.storage.ExternalStorageService;
import android.sysprop.MmdProperties;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.ArrayMap;
@@ -934,6 +935,9 @@ class StorageManagerService extends IStorageManager.Stub
        // Start scheduling nominally-daily fstrim operations
        MountServiceIdler.scheduleIdlePass(mContext);

        if (mmdEnabled() && MmdProperties.mmd_zram_enabled().orElse(false)) {
            ZramMaintenance.startZramMaintenance(mContext);
        } else {
            // Toggle zram-enable system property in response to settings
            mContext.getContentResolver().registerContentObserver(
                    Settings.Global.getUriFor(Settings.Global.ZRAM_ENABLED),
@@ -946,9 +950,6 @@ class StorageManagerService extends IStorageManager.Stub
                    });
            refreshZramSettings();

        if (mmdEnabled()) {
            ZramMaintenance.startZramMaintenance(mContext);
        } else {
            // Schedule zram writeback unless zram is disabled by persist.sys.zram_enabled
            String zramPropValue = SystemProperties.get(ZRAM_ENABLED_PROPERTY);
            if (!zramPropValue.equals("0")
@@ -982,7 +983,7 @@ class StorageManagerService extends IStorageManager.Stub
            // sole writer.
            SystemProperties.set(ZRAM_ENABLED_PROPERTY, desiredPropertyValue);
            // Schedule writeback only if zram is being enabled.
            if (!mmdEnabled() && desiredPropertyValue.equals("1")
            if (desiredPropertyValue.equals("1")
                    && mContext.getResources().getBoolean(
                        com.android.internal.R.bool.config_zramWriteback)) {
                ZramWriteback.scheduleZramWriteback(mContext);