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
gugelfrei
Henrik Baard 9 years ago committed by Jeff Sharkey
parent 7f52bca485
commit 77f156d9f0

@ -198,7 +198,7 @@ void MoveTask::run() {
// 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 @@ void MoveTask::run() {
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());

Loading…
Cancel
Save