Move external storage mkdir to ValidateInstallParams

Otherwise the Realpath will fail.

Bug: 179980369
Bug: 171861574
Test: A physical device with a SD card inserted and
      CF local instance with an emulated SD

Change-Id: I829fb8f2afea86054a1162502914144eff787a37
diff --git a/gsi_service.cpp b/gsi_service.cpp
index 66e01ee..b87b8bb 100644
--- a/gsi_service.cpp
+++ b/gsi_service.cpp
@@ -130,15 +130,6 @@
         *_aidl_return = status;
         return binder::Status::ok();
     }
-    if (access(install_dir_.c_str(), F_OK) != 0 && errno == ENOENT) {
-        if (IsExternalStoragePath(install_dir_)) {
-            if (mkdir(install_dir_.c_str(), 0755) != 0) {
-                PLOG(ERROR) << "Failed to create " << install_dir_;
-                *_aidl_return = IGsiService::INSTALL_ERROR_GENERIC;
-                return binder::Status::ok();
-            }
-        }
-    }
     std::string message;
     auto dsu_slot = GetDsuSlot(install_dir_);
     if (!RemoveFileIfExists(GetCompleteIndication(dsu_slot), &message)) {
@@ -852,6 +843,14 @@
         install_dir = kDefaultDsuImageFolder;
     }
 
+    if (access(install_dir.c_str(), F_OK) != 0 && (errno == ENOENT)) {
+        if (android::base::StartsWith(install_dir, kDsuSDPrefix)) {
+            if (mkdir(install_dir.c_str(), 0755) != 0) {
+                PLOG(ERROR) << "Failed to create " << install_dir;
+                return INSTALL_ERROR_GENERIC;
+            }
+        }
+    }
     // Normalize the path and add a trailing slash.
     std::string origInstallDir = install_dir;
     if (!android::base::Realpath(origInstallDir, &install_dir)) {