diff options
author | Daeho Jeong <daehojeong@google.com> | 2022-03-25 23:10:12 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-03-25 23:10:12 +0000 |
commit | 529d797f588b615511e85afb0dbcd6f74d043385 (patch) | |
tree | 87a6fe14379d99808717327ff48f33a78c100068 | |
parent | a644d5c642c96d7cc63191f5016f7ab693bb134b (diff) | |
parent | f605ac329bcfc47062e79d54a6182e0b1526e4d8 (diff) | |
download | vold-529d797f588b615511e85afb0dbcd6f74d043385.tar.gz |
vold: do not set gc sleep time with zero dirty segments am: 0b5f397e2b am: f605ac329b
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/2033123
Change-Id: I8c2ba8b86059a78b65094aa013e249c80f901a7f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | IdleMaint.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/IdleMaint.cpp b/IdleMaint.cpp index 597d6099..3efcb504 100644 --- a/IdleMaint.cpp +++ b/IdleMaint.cpp @@ -534,6 +534,7 @@ void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float float reclaimWeight, int32_t gcPeriod) { std::list<std::string> paths; bool needGC = true; + int32_t sleepTime; addFromFstab(&paths, PathTypes::kBlkDevice, true); if (paths.empty()) { @@ -570,6 +571,18 @@ void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float LOG(INFO) << "The sum of free segments: " << freeSegments << ", dirty segments: " << dirtySegments << " is under " << minSegmentThreshold; needGC = false; + } else { + neededSegments -= freeSegments; + neededSegments = std::min(neededSegments, (int32_t)(dirtySegments * dirtyReclaimRate)); + if (neededSegments == 0) { + LOG(INFO) << "Low dirty segments: " << dirtySegments; + needGC = false; + } else { + sleepTime = gcPeriod * ONE_MINUTE_IN_MS / neededSegments; + if (sleepTime < MIN_GC_URGENT_SLEEP_TIME) { + sleepTime = MIN_GC_URGENT_SLEEP_TIME; + } + } } if (!needGC) { @@ -579,18 +592,6 @@ void SetGCUrgentPace(int32_t neededSegments, int32_t minSegmentThreshold, float return; } - int32_t sleepTime; - - neededSegments -= freeSegments; - neededSegments = std::min(neededSegments, (int32_t)(dirtySegments * dirtyReclaimRate)); - if (neededSegments == 0) { - sleepTime = MIN_GC_URGENT_SLEEP_TIME; - } else { - sleepTime = gcPeriod * ONE_MINUTE_IN_MS / neededSegments; - if (sleepTime < MIN_GC_URGENT_SLEEP_TIME) { - sleepTime = MIN_GC_URGENT_SLEEP_TIME; - } - } if (!WriteStringToFile(std::to_string(sleepTime), gcSleepTimePath)) { PLOG(WARNING) << "Writing failed in " << gcSleepTimePath; return; |