Create media paths for existing users.

Bug: 6925012
Change-Id: I23bd9187217645cf538e074527c143a911a61299
diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c
index 56e1e16..b8d0bd7 100644
--- a/cmds/installd/installd.c
+++ b/cmds/installd/installd.c
@@ -407,6 +407,35 @@
                 goto fail;
             }
         }
+
+        // Ensure media directories for any existing users
+        DIR *dir;
+        struct dirent *dirent;
+        char user_media_dir[PATH_MAX];
+
+        dir = opendir(user_data_dir);
+        if (dir != NULL) {
+            while ((dirent = readdir(dir))) {
+                if (dirent->d_type == DT_DIR) {
+                    const char *name = dirent->d_name;
+
+                    // skip "." and ".."
+                    if (name[0] == '.') {
+                        if (name[1] == 0) continue;
+                        if ((name[1] == '.') && (name[2] == 0)) continue;
+                    }
+
+                    // /data/media/<user_id>
+                    snprintf(user_media_dir, PATH_MAX, "%s%s", android_media_dir.path, name);
+                    if (ensure_dir(user_media_dir, 0770, AID_MEDIA_RW, AID_MEDIA_RW) == -1) {
+                        ALOGE("Failed to ensure %s: %s", user_media_dir, strerror(errno));
+                        goto fail;
+                    }
+                }
+            }
+            closedir(dir);
+        }
+
         version = 1;
     }