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

Commit 853e53e0 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Tracing for isolated storage changes.

Will help us investigate possible performance regressions.

Bug: 126775624
Test: none
Change-Id: Id1249511869fb38d1635cb26e9147ed0e6d14082
parent ecfad022
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#endif

#define LOG_TAG "Zygote"
#define ATRACE_TAG ATRACE_TAG_DALVIK

#include <async_safe/log.h>

@@ -73,6 +74,7 @@
#include <cutils/multiuser.h>
#include <private/android_filesystem_config.h>
#include <utils/String8.h>
#include <utils/Trace.h>
#include <selinux/android.h>
#include <seccomp_policy.h>
#include <stats_event_list.h>
@@ -585,6 +587,8 @@ static void SetSchedulerPolicy(fail_fn_t fail_fn) {
}

static int UnmountTree(const char* path) {
  ATRACE_CALL();

  size_t path_len = strlen(path);

  FILE* fp = setmntent("/proc/mounts", "r");
@@ -627,6 +631,8 @@ static void CreateDir(const std::string& dir,
}

static void CreatePkgSandboxTarget(userid_t user_id, fail_fn_t fail_fn) {
  ATRACE_CALL();

  // Create /mnt/user/0/package
  std::string pkg_sandbox_dir = StringPrintf("/mnt/user/%d", user_id);
  CreateDir(pkg_sandbox_dir, 0751, AID_ROOT, AID_ROOT, fail_fn);
@@ -650,6 +656,8 @@ static void MountPkgSpecificDir(const std::string& mnt_source_root,
                                uid_t uid,
                                const char* dir_name,
                                fail_fn_t fail_fn) {
  ATRACE_CALL();

  std::string mnt_source_dir = StringPrintf("%s/Android/%s/%s",
      mnt_source_root.c_str(), dir_name, package_name.c_str());

@@ -662,6 +670,8 @@ static void MountPkgSpecificDir(const std::string& mnt_source_root,
static void CreateSubDirs(int parent_fd, const std::string& parent_path,
                          const std::vector<std::string>& sub_dirs,
                          fail_fn_t fail_fn) {
  ATRACE_CALL();

  for (auto& dir_name : sub_dirs) {
    struct stat sb;
    if (TEMP_FAILURE_RETRY(fstatat(parent_fd, dir_name.c_str(), &sb, 0)) == 0) {
@@ -686,6 +696,8 @@ static void EnsurePkgSpecificDirs(const std::string& path,
                                  const std::vector<std::string>& package_names,
                                  bool create_sandbox_dir,
                                  fail_fn_t fail_fn) {
  ATRACE_CALL();

  std::string android_dir = StringPrintf("%s/Android", path.c_str());
  android::base::unique_fd android_fd(open(android_dir.c_str(),
                                           O_RDONLY | O_DIRECTORY | O_CLOEXEC));
@@ -729,6 +741,7 @@ static void EnsurePkgSpecificDirs(const std::string& path,
}

static void CreatePkgSandboxSource(const std::string& sandbox_source, fail_fn_t fail_fn) {
  ATRACE_CALL();

  struct stat sb;
  if (TEMP_FAILURE_RETRY(stat(sandbox_source.c_str(), &sb)) == 0) {
@@ -751,6 +764,8 @@ static void CreatePkgSandboxSource(const std::string& sandbox_source, fail_fn_t
static void PreparePkgSpecificDirs(const std::vector<std::string>& package_names,
                                   bool mount_all_obbs, const std::string& sandbox_id,
                                   userid_t user_id, uid_t uid, fail_fn_t fail_fn) {
  ATRACE_CALL();

  std::unique_ptr<DIR, decltype(&closedir)> dirp(opendir("/storage"), closedir);
  if (!dirp) {
    fail_fn(CREATE_ERROR("Failed to opendir /storage: %s", strerror(errno)));
@@ -807,6 +822,8 @@ static void HandleMountModeInstaller(int mount_mode,
                                     userid_t user_id,
                                     const std::string& sandbox_id,
                                     fail_fn_t fail_fn) {
  ATRACE_CALL();

  std::string obb_mount_dir = StringPrintf("/mnt/user/%d/obb_mount", user_id);
  std::string obb_mount_file = StringPrintf("%s/%s", obb_mount_dir.c_str(), sandbox_id.c_str());
  if (mount_mode == MOUNT_EXTERNAL_INSTALLER) {
@@ -844,6 +861,7 @@ static void MountEmulatedStorage(uid_t uid, jint mount_mode,
        const std::string& sandbox_id,
        fail_fn_t fail_fn) {
  // See storage config details at http://source.android.com/tech/storage/
  ATRACE_CALL();

  String8 storage_source;
  if (mount_mode == MOUNT_EXTERNAL_DEFAULT) {