summaryrefslogtreecommitdiff
path: root/core/jni/AndroidRuntime.cpp
diff options
context:
space:
mode:
authorTodd Kennedy <toddke@google.com>2021-05-26 10:55:50 -0700
committerTodd Kennedy <toddke@google.com>2021-05-28 02:59:47 +0000
commite41b029d8530d29eb18937662da8c5ea2939dda7 (patch)
tree56a61c4a9524264bdb27ec92f4d6f97b3d9cc6eb /core/jni/AndroidRuntime.cpp
parentee4d86d0c1f04fdb676ae67d508ca92b167c30b9 (diff)
Release cblocks back to the free pool
Modern f2fs implementations starting in S support compression natively within the file system. The data blocks of specific installation artifacts [eg. .apk, .so, ...] can be compressed at the file system level, making them look and act like any other uncompressed file, but consuming a fraction of the space. However, the unused space is not free'd automatically. Instead, we must manually tell the file system to release the extra blocks [the delta between the compressed and uncompressed block counts] back to the free pool. Because of how compression works within the file system, once the blocks have been released, the file becomes read-only and cannot be modified until the free'd blocks have again been reserved from the free pool. For these installation artifacts, that is not a concern. Test: atest CtsAppSecurityHostTestCases:SplitTests Test: atest CtsAppSecurityHostTestCases:IsolatedSplitsTests Test: atest CtsAppSecurityHostTestCases:PkgInstallSignatureVerificationTest Test: atest CtsLibnativehelperTestCases Test: atest PackageManagerTests Test: Manual. Boot the device and see cblocks for stub APKs are released Test: Manual. Disable and re-enable stub APK and see cblocks are released Bug: 188928405 Change-Id: I4b29dab263d02a79d7b1593d35ae28101d33679a
Diffstat (limited to 'core/jni/AndroidRuntime.cpp')
-rw-r--r--core/jni/AndroidRuntime.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 7e8fc7e6ba4f..dca5d969257b 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -190,6 +190,7 @@ extern int register_android_content_res_ObbScanner(JNIEnv* env);
extern int register_android_content_res_Configuration(JNIEnv* env);
extern int register_android_animation_PropertyValuesHolder(JNIEnv *env);
extern int register_android_security_Scrypt(JNIEnv *env);
+extern int register_com_android_internal_content_F2fsUtils(JNIEnv* env);
extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env);
extern int register_com_android_internal_content_om_OverlayConfig(JNIEnv *env);
extern int register_com_android_internal_net_NetworkUtilsInternal(JNIEnv* env);
@@ -1621,6 +1622,7 @@ static const RegJNIRec gRegJNI[] = {
REG_JNI(register_android_animation_PropertyValuesHolder),
REG_JNI(register_android_security_Scrypt),
+ REG_JNI(register_com_android_internal_content_F2fsUtils),
REG_JNI(register_com_android_internal_content_NativeLibraryHelper),
REG_JNI(register_com_android_internal_os_DmabufInfoReader),
REG_JNI(register_com_android_internal_os_FuseAppLoop),