Migrating data sometimes leaves emulated unmounted
am: 7f52bca485
Change-Id: Id45c7edab0d244dcb17d6bda491ca297ed55c1c0
diff --git a/MoveTask.cpp b/MoveTask.cpp
index a6e5fed..f5cf04c 100644
--- a/MoveTask.cpp
+++ b/MoveTask.cpp
@@ -182,8 +182,11 @@
// Step 1: tear down volumes and mount silently without making
// visible to userspace apps
- bringOffline(mFrom);
- bringOffline(mTo);
+ {
+ std::lock_guard<std::mutex> lock(VolumeManager::Instance()->getLock());
+ bringOffline(mFrom);
+ bringOffline(mTo);
+ }
fromPath = mFrom->getInternalPath();
toPath = mTo->getInternalPath();
@@ -201,8 +204,11 @@
// NOTE: MountService watches for this magic value to know
// that move was successful
notifyProgress(82);
- bringOnline(mFrom);
- bringOnline(mTo);
+ {
+ std::lock_guard<std::mutex> lock(VolumeManager::Instance()->getLock());
+ bringOnline(mFrom);
+ bringOnline(mTo);
+ }
// Step 4: clean up old data
if (execRm(fromPath, 85, 15) != OK) {
@@ -213,8 +219,11 @@
release_wake_lock(kWakeLock);
return;
fail:
- bringOnline(mFrom);
- bringOnline(mTo);
+ {
+ std::lock_guard<std::mutex> lock(VolumeManager::Instance()->getLock());
+ bringOnline(mFrom);
+ bringOnline(mTo);
+ }
notifyProgress(kMoveFailedInternalError);
release_wake_lock(kWakeLock);
return;