summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/StorageManagerService.java13
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");
}