Merge "Compress .so files for PackageManager to reclaim the space" am: 97fe9c7a9c am: e08bbb4add

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1884703

Change-Id: I0a5af46384ea961009db2b0efe6bcffea8f0c7c2
This commit is contained in:
Jaegeuk Kim
2021-11-10 17:11:01 +00:00
committed by Automerger Merge Worker

View File

@@ -36,6 +36,7 @@
#include <inttypes.h> #include <inttypes.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h> #include <sys/types.h>
#include <linux/fs.h>
#include <memory> #include <memory>
@@ -253,6 +254,16 @@ copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntr
return INSTALL_FAILED_CONTAINER_ERROR; return INSTALL_FAILED_CONTAINER_ERROR;
} }
// If a filesystem like f2fs supports per-file compression, set the compression bit before data
// writes
unsigned int flags;
if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == -1) {
ALOGE("Failed to call FS_IOC_GETFLAGS on %s: %s\n", localTmpFileName, strerror(errno));
} else if ((flags & FS_COMPR_FL) == 0) {
flags |= FS_COMPR_FL;
ioctl(fd, FS_IOC_SETFLAGS, &flags);
}
if (!zipFile->uncompressEntry(zipEntry, fd)) { if (!zipFile->uncompressEntry(zipEntry, fd)) {
ALOGE("Failed uncompressing %s to %s\n", fileName, localTmpFileName); ALOGE("Failed uncompressing %s to %s\n", fileName, localTmpFileName);
close(fd); close(fd);