diff --git a/fs_mgr/libsnapshot/snapshot.cpp b/fs_mgr/libsnapshot/snapshot.cpp index 9b7f5bc3d..8e0be53c8 100644 --- a/fs_mgr/libsnapshot/snapshot.cpp +++ b/fs_mgr/libsnapshot/snapshot.cpp @@ -829,7 +829,9 @@ UpdateState SnapshotManager::CheckMergeState(const std::function& before // lock, because flock() might have failed. AcknowledgeMergeSuccess(lock.get()); } else if (state == UpdateState::Cancelled) { - RemoveAllUpdateState(lock.get(), before_cancel); + if (!RemoveAllUpdateState(lock.get(), before_cancel)) { + return ReadSnapshotUpdateStatus(lock.get()).state(); + } } return state; } @@ -1186,8 +1188,7 @@ bool SnapshotManager::HandleCancelledUpdate(LockedFile* lock, // If all snapshots were reflashed, then cancel the entire update. if (AreAllSnapshotsCancelled(lock)) { LOG(WARNING) << "Detected re-flashing, cancelling unverified update."; - RemoveAllUpdateState(lock, before_cancel); - return true; + return RemoveAllUpdateState(lock, before_cancel); } // If update has been rolled back, then cancel the entire update. @@ -1209,8 +1210,7 @@ bool SnapshotManager::HandleCancelledUpdate(LockedFile* lock, } LOG(WARNING) << "Detected rollback, cancelling unverified update."; - RemoveAllUpdateState(lock, before_cancel); - return true; + return RemoveAllUpdateState(lock, before_cancel); } std::unique_ptr SnapshotManager::ReadCurrentMetadata() {