Allow to skip mounting metadata in recovery.

After factory data reset, metadata has no valid ext4 fs, and it is not
formatted when recovery is started. Hence, it is possible that recovery
can't mount metadata. Use fallback path for sideloading full OTAs on
Virtual A/B devices in this case.

Test: the following:
  fastboot reboot fastboot -w
  fastboot reboot recovery
  adb root
  adb shell mount -t ext4 /dev/block/by-name/metadata /metadata # fails
  adb reboot sideload
  adb sideload ota.zip # successful

Bug: 152352037

Change-Id: I51ae3e5918b0c00054f309832c45823d80e46c69
(cherry picked from commit 77141004ba643a1d6b9d8a663cfb0791c2fe6b92)
Merged-In: I51ae3e5918b0c00054f309832c45823d80e46c69
diff --git a/cleanup_previous_update_action.cc b/cleanup_previous_update_action.cc
index ee68947..26cc6be 100644
--- a/cleanup_previous_update_action.cc
+++ b/cleanup_previous_update_action.cc
@@ -160,7 +160,10 @@
 
   if (metadata_device_ == nullptr) {
     LOG(ERROR) << "Failed to mount /metadata.";
-    processor_->ActionComplete(this, ErrorCode::kError);
+    // If metadata is erased but not formatted, it is possible to not mount
+    // it in recovery. It is safe to skip CleanupPreviousUpdateAction.
+    processor_->ActionComplete(
+        this, kIsRecovery ? ErrorCode::kSuccess : ErrorCode::kError);
     return;
   }