aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2020-03-30 19:12:51 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-03-30 19:12:51 +0000
commitcc8d4e8e69eb2dac876e3d5a4c0bcf4b1e97389f (patch)
tree9ebea2c702f85687b8ccf8e9e07107f87d6c23f0
parent9406118b6d486901f6ae8f042d0761ed2206d611 (diff)
parent6950e02536ca247d35ff14cfb2214ab9463a9e87 (diff)
downloadupdate_engine-cc8d4e8e69eb2dac876e3d5a4c0bcf4b1e97389f.tar.gz
Merge "Allow forward merge on powerwash." into rvc-dev
-rw-r--r--common/dynamic_partition_control_interface.h2
-rw-r--r--common/dynamic_partition_control_stub.cc2
-rw-r--r--common/dynamic_partition_control_stub.h2
-rw-r--r--dynamic_partition_control_android.cc4
-rw-r--r--dynamic_partition_control_android.h2
-rw-r--r--mock_dynamic_partition_control.h4
-rw-r--r--payload_consumer/postinstall_runner_action.cc3
7 files changed, 10 insertions, 9 deletions
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h
index d5db9bcd..58ebfe46 100644
--- a/common/dynamic_partition_control_interface.h
+++ b/common/dynamic_partition_control_interface.h
@@ -87,7 +87,7 @@ class DynamicPartitionControlInterface {
// After writing to new partitions, before rebooting into the new slot, call
// this function to indicate writes to new partitions are done.
- virtual bool FinishUpdate() = 0;
+ virtual bool FinishUpdate(bool powerwash_required) = 0;
// Get an action to clean up previous update.
// Return NoOpAction on non-Virtual A/B devices.
diff --git a/common/dynamic_partition_control_stub.cc b/common/dynamic_partition_control_stub.cc
index 1239eab0..903b7ee0 100644
--- a/common/dynamic_partition_control_stub.cc
+++ b/common/dynamic_partition_control_stub.cc
@@ -51,7 +51,7 @@ bool DynamicPartitionControlStub::PreparePartitionsForUpdate(
return true;
}
-bool DynamicPartitionControlStub::FinishUpdate() {
+bool DynamicPartitionControlStub::FinishUpdate(bool powerwash_required) {
return true;
}
diff --git a/common/dynamic_partition_control_stub.h b/common/dynamic_partition_control_stub.h
index 679d028e..d8e254ea 100644
--- a/common/dynamic_partition_control_stub.h
+++ b/common/dynamic_partition_control_stub.h
@@ -40,7 +40,7 @@ class DynamicPartitionControlStub : public DynamicPartitionControlInterface {
bool update,
uint64_t* required_size) override;
- bool FinishUpdate() override;
+ bool FinishUpdate(bool powerwash_required) override;
std::unique_ptr<AbstractAction> GetCleanupPreviousUpdateAction(
BootControlInterface* boot_control,
PrefsInterface* prefs,
diff --git a/dynamic_partition_control_android.cc b/dynamic_partition_control_android.cc
index 81d0d770..09f61adb 100644
--- a/dynamic_partition_control_android.cc
+++ b/dynamic_partition_control_android.cc
@@ -624,11 +624,11 @@ bool DynamicPartitionControlAndroid::UpdatePartitionMetadata(
return true;
}
-bool DynamicPartitionControlAndroid::FinishUpdate() {
+bool DynamicPartitionControlAndroid::FinishUpdate(bool powerwash_required) {
if (GetVirtualAbFeatureFlag().IsEnabled() &&
snapshot_->GetUpdateState() == UpdateState::Initiated) {
LOG(INFO) << "Snapshot writes are done.";
- return snapshot_->FinishedSnapshotWrites();
+ return snapshot_->FinishedSnapshotWrites(powerwash_required);
}
return true;
}
diff --git a/dynamic_partition_control_android.h b/dynamic_partition_control_android.h
index a11889a7..6dbe3704 100644
--- a/dynamic_partition_control_android.h
+++ b/dynamic_partition_control_android.h
@@ -45,7 +45,7 @@ class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
const DeltaArchiveManifest& manifest,
bool update,
uint64_t* required_size) override;
- bool FinishUpdate() override;
+ bool FinishUpdate(bool powerwash_required) override;
std::unique_ptr<AbstractAction> GetCleanupPreviousUpdateAction(
BootControlInterface* boot_control,
PrefsInterface* prefs,
diff --git a/mock_dynamic_partition_control.h b/mock_dynamic_partition_control.h
index b3e0c24d..169c2657 100644
--- a/mock_dynamic_partition_control.h
+++ b/mock_dynamic_partition_control.h
@@ -42,7 +42,7 @@ class MockDynamicPartitionControl : public DynamicPartitionControlInterface {
PreparePartitionsForUpdate,
bool(uint32_t, uint32_t, const DeltaArchiveManifest&, bool, uint64_t*));
MOCK_METHOD0(GetVirtualAbFeatureFlag, FeatureFlag());
- MOCK_METHOD0(FinishUpdate, bool());
+ MOCK_METHOD1(FinishUpdate, bool(bool));
MOCK_METHOD0(CleanupSuccessfulUpdate, ErrorCode());
MOCK_METHOD3(GetCleanupPreviousUpdateAction,
std::unique_ptr<AbstractAction>(
@@ -76,7 +76,7 @@ class MockDynamicPartitionControlAndroid
MOCK_METHOD0(GetDynamicPartitionsFeatureFlag, FeatureFlag());
MOCK_METHOD1(GetSuperPartitionName, std::string(uint32_t));
MOCK_METHOD0(GetVirtualAbFeatureFlag, FeatureFlag());
- MOCK_METHOD0(FinishUpdate, bool());
+ MOCK_METHOD1(FinishUpdate, bool(bool));
void set_fake_mapped_devices(const std::set<std::string>& fake) override {
DynamicPartitionControlAndroid::set_fake_mapped_devices(fake);
diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index 0f484936..c08cfc20 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -341,7 +341,8 @@ void PostinstallRunnerAction::CompletePostinstall(ErrorCode error_code) {
// steps succeeded.
if (error_code == ErrorCode::kSuccess) {
if (install_plan_.switch_slot_on_reboot) {
- if (!boot_control_->GetDynamicPartitionControl()->FinishUpdate() ||
+ if (!boot_control_->GetDynamicPartitionControl()->FinishUpdate(
+ install_plan_.powerwash_required) ||
!boot_control_->SetActiveBootSlot(install_plan_.target_slot)) {
error_code = ErrorCode::kPostinstallRunnerError;
} else {