Force merges to complete before wiping data or metadata.
After an OTA is applied, a wipe in recovery may overwrite components of dynamic partitions living in userdata. If the OTA has not yet begun merging, we mark the current slot unbootable. If the OTA has begun merging, we wait for the merge to complete. This logic is encapsulated in libsnapshot. Bug: 139156011 Test: manual test Change-Id: Id6544a1b8583afcbba11559d46214ec2e68ffa40
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include <android-base/logging.h>
|
||||
#include <android-base/stringprintf.h>
|
||||
|
||||
#include "install/snapshot_utils.h"
|
||||
#include "otautil/dirutil.h"
|
||||
#include "recovery_ui/ui.h"
|
||||
#include "recovery_utils/logging.h"
|
||||
@@ -104,6 +105,12 @@ bool WipeCache(RecoveryUI* ui, const std::function<bool()>& confirm_func) {
|
||||
bool WipeData(Device* device, bool convert_fbe) {
|
||||
RecoveryUI* ui = device->GetUI();
|
||||
ui->Print("\n-- Wiping data...\n");
|
||||
|
||||
if (!FinishPendingSnapshotMerges(device)) {
|
||||
ui->Print("Unable to check update status or complete merge, cannot wipe partitions.\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
bool success = device->PreWipeData();
|
||||
if (success) {
|
||||
success &= EraseVolume(DATA_ROOT, ui, convert_fbe);
|
||||
|
||||
Reference in New Issue
Block a user