Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e352795c authored by Pawit Pornkitprasan's avatar Pawit Pornkitprasan
Browse files

installd: Delete cache properly for devices using datadata partition

The java side already checks /data/data for free space but installd
still checks /data causing it to never reap the cache (because it
thinks that enough free space is available.)

Change-Id: I191f3ceb84df1101ab2918ec0038213d72ec1ce2
parent d536a7f7
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

/* Directory records that are used in execution of commands. */
dir_rec_t android_data_dir;
dir_rec_t android_datadata_dir;
dir_rec_t android_asec_dir;
dir_rec_t android_app_dir;
dir_rec_t android_app_private_dir;
@@ -162,7 +163,11 @@ int delete_cache(const char *pkgname)
static int64_t disk_free()
{
    struct statfs sfs;
    if (statfs(android_data_dir.path, &sfs) == 0) {
    /* Scanning /data/data because on some devices, it's on a different partition
     * and scanning /data will yield the incorrect result. (This function is only
     * used for freeing space on /data/data so it is okay to be more specific.)
     */
    if (statfs(android_datadata_dir.path, &sfs) == 0) {
        return sfs.f_bavail * sfs.f_bsize;
    } else {
        LOGE("Couldn't statfs %s: %s\n", android_data_dir.path, strerror(errno));
+5 −0
Original line number Diff line number Diff line
@@ -270,6 +270,11 @@ int initialize_globals() {
        return -1;
    }

    // Get the android datadata directory.
    if (copy_and_append(&android_datadata_dir, &android_data_dir, DATA_SUBDIR) < 0) {
        return -1;
    }

    // Get the android app directory.
    if (copy_and_append(&android_app_dir, &android_data_dir, APP_SUBDIR) < 0) {
        return -1;
+2 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@

#define CACHE_DIR_POSTFIX      "/cache"

#define DATA_SUBDIR             "data/" // sub-directory under ANDROID_DATA
#define APP_SUBDIR             "app/" // sub-directory under ANDROID_DATA

/* other handy constants */
@@ -87,6 +88,7 @@ typedef struct {
extern dir_rec_t android_app_dir;
extern dir_rec_t android_app_private_dir;
extern dir_rec_t android_data_dir;
extern dir_rec_t android_datadata_dir;
extern dir_rec_t android_asec_dir;
extern dir_rec_array_t android_system_dirs;