Merge "Undo Utils dependency on VolumeManager"
diff --git a/Utils.cpp b/Utils.cpp
index 9c19190..1f6ff21 100644
--- a/Utils.cpp
+++ b/Utils.cpp
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-#include "sehandle.h"
 #include "Utils.h"
+
 #include "Process.h"
-#include "VolumeManager.h"
+#include "sehandle.h"
 
 #include <android-base/file.h>
 #include <android-base/logging.h>
@@ -55,6 +55,8 @@
 security_context_t sFsckContext = nullptr;
 security_context_t sFsckUntrustedContext = nullptr;
 
+bool sSleepOnUnmount = true;
+
 static const char* kBlkidPath = "/system/bin/blkid";
 static const char* kKeyPath = "/data/misc/vold";
 
@@ -134,22 +136,22 @@
     }
     // Apps might still be handling eject request, so wait before
     // we start sending signals
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
 
     KillProcessesWithOpenFiles(path, SIGINT);
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
     if (!umount2(cpath, UMOUNT_NOFOLLOW) || errno == EINVAL || errno == ENOENT) {
         return OK;
     }
 
     KillProcessesWithOpenFiles(path, SIGTERM);
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
     if (!umount2(cpath, UMOUNT_NOFOLLOW) || errno == EINVAL || errno == ENOENT) {
         return OK;
     }
 
     KillProcessesWithOpenFiles(path, SIGKILL);
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
     if (!umount2(cpath, UMOUNT_NOFOLLOW) || errno == EINVAL || errno == ENOENT) {
         return OK;
     }
@@ -161,17 +163,17 @@
     if (KillProcessesWithOpenFiles(path, SIGINT) == 0) {
         return OK;
     }
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
 
     if (KillProcessesWithOpenFiles(path, SIGTERM) == 0) {
         return OK;
     }
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
 
     if (KillProcessesWithOpenFiles(path, SIGKILL) == 0) {
         return OK;
     }
-    if (!VolumeManager::shutting_down) sleep(5);
+    if (sSleepOnUnmount) sleep(5);
 
     // Send SIGKILL a second time to determine if we've
     // actually killed everyone with open files
diff --git a/Utils.h b/Utils.h
index 9163006..c5955cc 100644
--- a/Utils.h
+++ b/Utils.h
@@ -38,6 +38,9 @@
 extern security_context_t sFsckContext;
 extern security_context_t sFsckUntrustedContext;
 
+// TODO remove this with better solution, b/64143519
+extern bool sSleepOnUnmount;
+
 status_t CreateDeviceNode(const std::string& path, dev_t dev);
 status_t DestroyDeviceNode(const std::string& path);
 
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index c1d51d9..1847ab1 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -62,8 +62,6 @@
 using android::base::StringPrintf;
 using android::base::unique_fd;
 
-bool VolumeManager::shutting_down = false;
-
 static const char* kPathUserMount = "/mnt/user";
 static const char* kPathVirtualDisk = "/data/misc/vold/virtual_disk";
 
@@ -535,14 +533,14 @@
     if (mInternalEmulated == nullptr) {
         return 0; // already shutdown
     }
-    shutting_down = true;
+    android::vold::sSleepOnUnmount = false;
     mInternalEmulated->destroy();
     mInternalEmulated = nullptr;
     for (const auto& disk : mDisks) {
         disk->destroy();
     }
     mDisks.clear();
-    shutting_down = false;
+    android::vold::sSleepOnUnmount = true;
     return 0;
 }
 
diff --git a/VolumeManager.h b/VolumeManager.h
index 4f62de9..b66aa2f 100644
--- a/VolumeManager.h
+++ b/VolumeManager.h
@@ -43,10 +43,6 @@
 #define DEBUG_APPFUSE 0
 
 class VolumeManager {
-public:
-    //TODO remove this with better solution, b/64143519
-    static bool shutting_down;
-
 private:
     static VolumeManager *sInstance;