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;