summaryrefslogtreecommitdiff
path: root/checkpoint_gc/checkpoint_gc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'checkpoint_gc/checkpoint_gc.sh')
-rw-r--r--checkpoint_gc/checkpoint_gc.sh20
1 files changed, 12 insertions, 8 deletions
diff --git a/checkpoint_gc/checkpoint_gc.sh b/checkpoint_gc/checkpoint_gc.sh
index a1169ec0..b3080463 100644
--- a/checkpoint_gc/checkpoint_gc.sh
+++ b/checkpoint_gc/checkpoint_gc.sh
@@ -28,10 +28,13 @@ SLEEP=5
TIME=0
MAX_TIME=1200
-if [ ! -d /dev/sys/fs/by-name/userdata ]; then
+# We only need to run this if we're using f2fs
+if [ ! -f /dev/sys/fs/by-name/userdata/gc_urgent ]; then
exit 0
fi
+# Ideally we want to track unusable, as it directly measures what we
+# care about. If it's not present, dirty_segments is the best proxy.
if [ -f /dev/sys/fs/by-name/userdata/unusable ]; then
UNUSABLE=1
METRIC="unusable blocks"
@@ -44,9 +47,7 @@ else
fi
log -pi -t checkpoint_gc Turning on GC for userdata
-read OLD_SLEEP < /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time || exit 1
-echo 50 > /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time || exit 1
-echo 1 > /dev/sys/fs/by-name/userdata/gc_urgent || exit 1
+echo 2 > /dev/sys/fs/by-name/userdata/gc_urgent || exit 1
CURRENT=${START}
@@ -66,15 +67,18 @@ while [ ${CURRENT} -gt ${THRESHOLD} ]; do
sleep ${SLEEP}
TIME=$((${TIME}+${SLEEP}))
if [ ${TIME} -gt ${MAX_TIME} ]; then
+ log -pi -t checkpoint_gc Timed out with gc threshold not met.
break
fi
# In case someone turns it off behind our back
- echo 1 > /dev/sys/fs/by-name/userdata/gc_urgent
+ echo 2 > /dev/sys/fs/by-name/userdata/gc_urgent
done
-log -pi -t checkpoint_gc Turning off GC for userdata
-echo 0 > /dev/sys/fs/by-name/userdata/gc_urgent
-echo ${OLD_SLEEP} > /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time
+# It could be a while before the system reboots for the update...
+# Leaving on low level GC can help ensure the boot for ota is faster
+# If powerhints decides to turn it off, we'll just rely on normal GC
+log -pi -t checkpoint_gc Leaving on low GC for userdata
+echo 2 > /dev/sys/fs/by-name/userdata/gc_urgent
sync
print -u${STATUS_FD} "global_progress 1.0"