diff --git a/CommandListener.cpp b/CommandListener.cpp
index fddee01..f47fb6a 100644
--- a/CommandListener.cpp
+++ b/CommandListener.cpp
@@ -138,6 +138,7 @@
     }
 
     VolumeManager *vm = VolumeManager::Instance();
+    std::lock_guard<std::mutex> lock(vm->getLock());
 
     // TODO: tease out methods not directly related to volumes
 
diff --git a/Disk.cpp b/Disk.cpp
index d6b748b..218c251 100644
--- a/Disk.cpp
+++ b/Disk.cpp
@@ -242,8 +242,6 @@
 }
 
 status_t Disk::readPartitions() {
-    std::lock_guard<std::mutex> lock(mLock);
-
     int8_t maxMinors = getMaxMinors();
     if (maxMinors < 0) {
         return -ENOTSUP;
@@ -337,8 +335,6 @@
 }
 
 status_t Disk::partitionPublic() {
-    std::lock_guard<std::mutex> lock(mLock);
-
     // TODO: improve this code
     destroyAllVolumes();
     mJustPartitioned = true;
@@ -385,8 +381,6 @@
 }
 
 status_t Disk::partitionMixed(int8_t ratio) {
-    std::lock_guard<std::mutex> lock(mLock);
-
     int res;
 
     destroyAllVolumes();
diff --git a/Disk.h b/Disk.h
index 5ba6bae..a8461fb 100644
--- a/Disk.h
+++ b/Disk.h
@@ -21,7 +21,6 @@
 
 #include <utils/Errors.h>
 
-#include <mutex>
 #include <vector>
 
 namespace android {
@@ -101,8 +100,6 @@
     int mFlags;
     /* Flag indicating object is created */
     bool mCreated;
-    /* Lock held while partitioning */
-    std::mutex mLock;
     /* Flag that we just partitioned and should format all volumes */
     bool mJustPartitioned;
 
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index e05da4d..cd1017c 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -257,6 +257,7 @@
 
     // Assume that we always have an emulated volume on internal
     // storage; the framework will decide if it should be mounted.
+    CHECK(mInternalEmulated == nullptr);
     mInternalEmulated = std::shared_ptr<android::vold::VolumeBase>(
             new android::vold::EmulatedVolume("/data/media"));
     mInternalEmulated->create();
@@ -265,12 +266,15 @@
 }
 
 int VolumeManager::stop() {
+    CHECK(mInternalEmulated != nullptr);
     mInternalEmulated->destroy();
     mInternalEmulated = nullptr;
     return 0;
 }
 
 void VolumeManager::handleBlockEvent(NetlinkEvent *evt) {
+    std::lock_guard<std::mutex> lock(mLock);
+
     if (mDebug) {
         LOG(VERBOSE) << "----------------";
         LOG(VERBOSE) << "handleBlockEvent with action " << (int) evt->getAction();
@@ -433,6 +437,8 @@
 }
 
 int VolumeManager::unmountAll() {
+    std::lock_guard<std::mutex> lock(mLock);
+
     // First, try gracefully unmounting all known devices
     if (mInternalEmulated != nullptr) {
         mInternalEmulated->unmount();
diff --git a/VolumeManager.h b/VolumeManager.h
index 44920e0..e0b0ac8 100644
--- a/VolumeManager.h
+++ b/VolumeManager.h
@@ -23,8 +23,9 @@
 
 #ifdef __cplusplus
 
-#include <string>
 #include <list>
+#include <mutex>
+#include <string>
 
 #include <cutils/multiuser.h>
 #include <utils/List.h>
@@ -82,6 +83,9 @@
 public:
     virtual ~VolumeManager();
 
+    // TODO: pipe all requests through VM to avoid exposing this lock
+    std::mutex& getLock() { return mLock; }
+
     int start();
     int stop();
 
@@ -186,6 +190,8 @@
 
     int linkPrimary(userid_t userId);
 
+    std::mutex mLock;
+
     std::list<std::shared_ptr<DiskSource>> mDiskSources;
     std::list<std::shared_ptr<android::vold::Disk>> mDisks;
 
diff --git a/main.cpp b/main.cpp
index d159230..64cd0ee 100644
--- a/main.cpp
+++ b/main.cpp
@@ -42,8 +42,6 @@
 static void coldboot(const char *path);
 static void parse_args(int argc, char** argv);
 
-//#define DEBUG_FSTAB "/data/local/tmp/fstab.debug"
-
 struct fstab *fstab;
 
 struct selabel_handle *sehandle;
@@ -228,12 +226,6 @@
                 flags |= android::vold::Disk::Flags::kDefaultPrimary;
             }
 
-            if (property_get_bool("vold.force_adoptable", false)
-                    || property_get_bool("persist.vold.force_adoptable", false)) {
-                LOG(DEBUG) << "Forcing " << sysPattern << " to be adoptable";
-                flags |= android::vold::Disk::Flags::kAdoptable;
-            }
-
             vm->addDiskSource(std::shared_ptr<VolumeManager::DiskSource>(
                     new VolumeManager::DiskSource(sysPattern, nickname, flags)));
         }
