summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaeho Jeong <daehojeong@google.com>2022-03-25 23:10:12 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-03-25 23:10:12 +0000
commit529d797f588b615511e85afb0dbcd6f74d043385 (patch)
tree87a6fe14379d99808717327ff48f33a78c100068
parenta644d5c642c96d7cc63191f5016f7ab693bb134b (diff)
parentf605ac329bcfc47062e79d54a6182e0b1526e4d8 (diff)
downloadvold-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.cpp25
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;