summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Rosenberg <drosen@google.com>2019-03-26 17:13:31 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-03-26 17:13:31 -0700
commit14c86ddd39b9d62a7479e551add085c50ccbc482 (patch)
treebb8b2ed641481e0603463de33d3c02d8be37f261
parent133b475d034ee43a05bfcdd160c346dafff1f691 (diff)
parent632a01f74563551d5f2437fde39fa0475166350d (diff)
downloadextras-14c86ddd39b9d62a7479e551add085c50ccbc482.tar.gz
Merge "Change checkpoint_gc to run until threshold is met"
am: 632a01f745 Change-Id: Id0a30badf557476f99031d9e11f53cfdddc819b7
-rw-r--r--checkpoint_gc/checkpoint_gc.sh24
1 files changed, 14 insertions, 10 deletions
diff --git a/checkpoint_gc/checkpoint_gc.sh b/checkpoint_gc/checkpoint_gc.sh
index bf86e214..d5f7ab40 100644
--- a/checkpoint_gc/checkpoint_gc.sh
+++ b/checkpoint_gc/checkpoint_gc.sh
@@ -23,9 +23,10 @@
# TARGET_SLOT="${1}"
STATUS_FD="${2}"
-GC_TIME=120
DIRTY_SEGMENTS_THRESHOLD=100
+SLEEP=5
+
NAME=`while read dev dir type opt; do
if [ /data = ${dir} -a f2fs = ${type} ]; then
echo ${dev##*/}
@@ -38,16 +39,19 @@ fi
log -pi -t checkpoint_gc Turning on GC for ${NAME}
echo 1 > /sys/fs/f2fs/${NAME}/gc_urgent || exit 1
-COUNT=0
-STEP=5
-while [ ${COUNT} -lt ${GC_TIME} ]; do
- print -u${STATUS_FD} "global_progress `echo $COUNT/$GC_TIME|bc -l`"
- read DIRTY_SEGMENTS < /sys/fs/f2fs/${NAME}/dirty_segments
- if [ ${DIRTY_SEGMENTS} -le ${DIRTY_SEGMENTS_THRESHOLD} ]; then
- break
+read DIRTY_SEGMENTS_START < /sys/fs/f2fs/${NAME}/dirty_segments
+DIRTY_SEGMENTS=${DIRTY_SEGMENTS_START}
+TODO_SEGMENTS=$((${DIRTY_SEGMENTS_START}-${DIRTY_SEGMENTS_THRESHOLD}))
+echo $DIRTY_SEGMENTS_START
+while [ ${DIRTY_SEGMENTS} -gt ${DIRTY_SEGMENTS_THRESHOLD} ]; do
+ echo $DIRTY_SEGMENTS
+ PROGRESS=`echo "(${DIRTY_SEGMENTS_START}-${DIRTY_SEGMENTS})/${TODO_SEGMENTS}"|bc -l`
+ if [[ $PROGRESS == -* ]]; then
+ PROGRESS=0
fi
- sleep ${STEP}
- COUNT=$((${COUNT}+${STEP}))
+ print -u${STATUS_FD} "global_progress ${PROGRESS}"
+ read DIRTY_SEGMENTS < /sys/fs/f2fs/${NAME}/dirty_segments
+ sleep ${SLEEP}
done
log -pi -t checkpoint_gc Turning off GC for ${NAME}