diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-06-15 15:00:43 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-06-15 15:00:43 +0000 |
commit | a18c78ed0d664271e9203ed38422d05d4b34d377 (patch) | |
tree | bb2d12fcb00260a05a06fd9dde7c12b7e21c53b9 | |
parent | 1fc2db56cd84f1e453631cd6b2704f0640d4c066 (diff) | |
parent | 2a8f28f46094672eec33ae234ed97a8b63c483c4 (diff) | |
download | extras-a18c78ed0d664271e9203ed38422d05d4b34d377.tar.gz |
Snap for 7459072 from 2a8f28f46094672eec33ae234ed97a8b63c483c4 to sc-mainline-release
Change-Id: I727f6445d6f2a8ccf807620984f593841b0c051b
-rw-r--r-- | checkpoint_gc/checkpoint_gc.sh | 20 | ||||
-rw-r--r-- | profcollectd/libprofcollectd/report.rs | 11 | ||||
-rw-r--r-- | profcollectd/profcollectd.rc | 8 |
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 |