summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-06-15 15:00:43 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-06-15 15:00:43 +0000
commita18c78ed0d664271e9203ed38422d05d4b34d377 (patch)
treebb2d12fcb00260a05a06fd9dde7c12b7e21c53b9
parent1fc2db56cd84f1e453631cd6b2704f0640d4c066 (diff)
parent2a8f28f46094672eec33ae234ed97a8b63c483c4 (diff)
downloadextras-a18c78ed0d664271e9203ed38422d05d4b34d377.tar.gz
Snap for 7459072 from 2a8f28f46094672eec33ae234ed97a8b63c483c4 to sc-mainline-release
Change-Id: I727f6445d6f2a8ccf807620984f593841b0c051b
-rw-r--r--checkpoint_gc/checkpoint_gc.sh20
-rw-r--r--profcollectd/libprofcollectd/report.rs11
-rw-r--r--profcollectd/profcollectd.rc8
3 files changed, 23 insertions, 16 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"
diff --git a/profcollectd/libprofcollectd/report.rs b/profcollectd/libprofcollectd/report.rs
index f3b8fe12..c37993b7 100644
--- a/profcollectd/libprofcollectd/report.rs
+++ b/profcollectd/libprofcollectd/report.rs
@@ -19,9 +19,9 @@
use anyhow::{anyhow, Result};
use lazy_static::lazy_static;
use macaddr::MacAddr6;
-use std::fs::{self, File};
+use std::fs::{self, File, Permissions};
use std::io::{Read, Write};
-use std::os::unix::fs::OpenOptionsExt;
+use std::os::unix::fs::PermissionsExt;
use std::path::{Path, PathBuf};
use std::time::SystemTime;
use uuid::v1::{Context, Timestamp};
@@ -45,11 +45,14 @@ pub fn pack_report(profile: &Path, report: &Path, config: &Config) -> Result<Str
// Remove the current report file if exists.
fs::remove_file(&report).ok();
+ let report_file = fs::OpenOptions::new().create_new(true).write(true).open(&report)?;
+
// Set report file ACL bits to 644, so that this can be shared to uploaders.
// Who has permission to actually read the file is protected by SELinux policy.
- let report = fs::OpenOptions::new().create_new(true).write(true).mode(0o644).open(&report)?;
+ fs::set_permissions(&report, Permissions::from_mode(0o644))?;
+
let options = FileOptions::default().compression_method(Deflated);
- let mut zip = ZipWriter::new(report);
+ let mut zip = ZipWriter::new(report_file);
fs::read_dir(profile)?
.filter_map(|e| e.ok())
diff --git a/profcollectd/profcollectd.rc b/profcollectd/profcollectd.rc
index 9ac3fbc9..d1dbd9ef 100644
--- a/profcollectd/profcollectd.rc
+++ b/profcollectd/profcollectd.rc
@@ -14,7 +14,7 @@ on property:persist.profcollectd.enabled_override=true
on post-fs-data
# Create directory for profcollectd.
- mkdir /data/misc/profcollectd 0770 root root
- mkdir /data/misc/profcollectd/trace 0770 root root
- mkdir /data/misc/profcollectd/output 0770 root root
- mkdir /data/misc/profcollectd/report 0770 root root
+ mkdir /data/misc/profcollectd 0770 root system
+ mkdir /data/misc/profcollectd/trace 0770 root system
+ mkdir /data/misc/profcollectd/output 0770 root system
+ mkdir /data/misc/profcollectd/report 0770 root system