diff options
| -rw-r--r-- | services/core/java/com/android/server/StorageManagerService.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 02524925326e..e0d1c1e70b34 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -2753,6 +2753,8 @@ class StorageManagerService extends IStorageManager.Stub enforcePermission(android.Manifest.permission.MOUNT_FORMAT_FILESYSTEMS); try { + int avgWriteAmount = 0; + int targetDirtyRatio = mTargetDirtyRatio; int latestWrite = mVold.getWriteAmount(); if (latestWrite == -1) { Slog.w(TAG, "Failed to get storage write record"); @@ -2765,11 +2767,12 @@ class StorageManagerService extends IStorageManager.Stub // (first boot after OTA), We skip the smart idle maintenance if (!needsCheckpoint() || !supportsBlockCheckpoint()) { if (!refreshLifetimeConstraint() || !checkChargeStatus()) { - return; + Slog.i(TAG, "Turn off gc_urgent based on checking lifetime and charge status"); + targetDirtyRatio = 100; + } else { + avgWriteAmount = getAverageWriteAmount(); } - int avgWriteAmount = getAverageWriteAmount(); - Slog.i(TAG, "Set smart idle maintenance: " + "latest write amount: " + latestWrite + ", average write amount: " + avgWriteAmount + ", min segment threshold: " + mMinSegmentsThreshold + @@ -2777,10 +2780,10 @@ class StorageManagerService extends IStorageManager.Stub ", segment reclaim weight: " + mSegmentReclaimWeight + ", period(min): " + sSmartIdleMaintPeriod + ", min gc sleep time(ms): " + mMinGCSleepTime + - ", target dirty ratio: " + mTargetDirtyRatio); + ", target dirty ratio: " + targetDirtyRatio); mVold.setGCUrgentPace(avgWriteAmount, mMinSegmentsThreshold, mDirtyReclaimRate, mSegmentReclaimWeight, sSmartIdleMaintPeriod, - mMinGCSleepTime, mTargetDirtyRatio); + mMinGCSleepTime, targetDirtyRatio); } else { Slog.i(TAG, "Skipping smart idle maintenance - block based checkpoint in progress"); } |