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

Commit 4d03ee60 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Andreas Gampe
Browse files

Change storage migration to use quota APIs.

New quota APIs are much faster than trying to measure manually, and
removing this last user of calculateDirectorySize() means we can
remove it once and for all.

(cherry picked from commit a0136989)

Bug: 36056324
Test: builds, boots
Merged-In: I60bb197ffc161ed24fe4aa8093495c8874095cdb
Change-Id: I60bb197ffc161ed24fe4aa8093495c8874095cdb
parent 0bb41697
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -1644,6 +1644,7 @@ binder::Status InstalldNativeService::getExternalSize(const std::unique_ptr<std:
    int64_t videoSize = 0;
    int64_t imageSize = 0;
    int64_t appSize = 0;
    int64_t obbSize = 0;

    auto device = findQuotaDeviceForUuid(uuid);
    if (device.empty()) {
@@ -1691,6 +1692,13 @@ binder::Status InstalldNativeService::getExternalSize(const std::unique_ptr<std:
#endif
            imageSize = dq.dqb_curspace;
        }
        if (quotactl(QCMD(Q_GETQUOTA, GRPQUOTA), device.c_str(), AID_MEDIA_OBB,
                reinterpret_cast<char*>(&dq)) == 0) {
#if MEASURE_DEBUG
            LOG(DEBUG) << "quotactl() for GID " << AID_MEDIA_OBB << " " << dq.dqb_curspace;
#endif
            obbSize = dq.dqb_curspace;
        }
        ATRACE_END();

        ATRACE_BEGIN("apps");
@@ -1747,6 +1755,11 @@ binder::Status InstalldNativeService::getExternalSize(const std::unique_ptr<std:
        }
        fts_close(fts);
        ATRACE_END();

        ATRACE_BEGIN("obb");
        auto obbPath = create_data_media_obb_path(uuid_, "");
        calculate_tree_size(obbPath, &obbSize);
        ATRACE_END();
    }

    std::vector<int64_t> ret;
@@ -1755,6 +1768,7 @@ binder::Status InstalldNativeService::getExternalSize(const std::unique_ptr<std:
    ret.push_back(videoSize);
    ret.push_back(imageSize);
    ret.push_back(appSize);
    ret.push_back(obbSize);
#if MEASURE_DEBUG
    LOG(DEBUG) << "Final result " << toString(ret);
#endif