Failing to "Migrate data" leaves target unusable

When "migrating" data failes due to insufficient space
at target location, the data copied so far is left in
target location, which in practice is now filled to the
brim.

If copy fails clean up the data copied so far since user
has the data in original location.

Bug: 26322200
Change-Id: Iab29a7f9e653e6857ee0e2723d151dfec81b14dd
diff --git a/MoveTask.cpp b/MoveTask.cpp
index a8fe14d..a0522d2 100644
--- a/MoveTask.cpp
+++ b/MoveTask.cpp
@@ -198,7 +198,7 @@
 
     // Step 3: perform actual copy
     if (execCp(fromPath, toPath, 20, 60) != OK) {
-        goto fail;
+        goto copy_fail;
     }
 
     // NOTE: MountService watches for this magic value to know
@@ -218,6 +218,12 @@
     notifyProgress(kMoveSucceeded);
     release_wake_lock(kWakeLock);
     return;
+
+copy_fail:
+    // if we failed to copy the data we should not leave it laying around
+    // in target location. Do not check return value, we can not do any
+    // useful anyway.
+    execRm(toPath, 80, 1);
 fail:
     {
         std::lock_guard<std::mutex> lock(VolumeManager::Instance()->getLock());