diff options
author | Yifan Hong <elsk@google.com> | 2020-03-30 19:12:51 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-03-30 19:12:51 +0000 |
commit | cc8d4e8e69eb2dac876e3d5a4c0bcf4b1e97389f (patch) | |
tree | 9ebea2c702f85687b8ccf8e9e07107f87d6c23f0 | |
parent | 9406118b6d486901f6ae8f042d0761ed2206d611 (diff) | |
parent | 6950e02536ca247d35ff14cfb2214ab9463a9e87 (diff) | |
download | update_engine-cc8d4e8e69eb2dac876e3d5a4c0bcf4b1e97389f.tar.gz |
Merge "Allow forward merge on powerwash." into rvc-dev
-rw-r--r-- | common/dynamic_partition_control_interface.h | 2 | ||||
-rw-r--r-- | common/dynamic_partition_control_stub.cc | 2 | ||||
-rw-r--r-- | common/dynamic_partition_control_stub.h | 2 | ||||
-rw-r--r-- | dynamic_partition_control_android.cc | 4 | ||||
-rw-r--r-- | dynamic_partition_control_android.h | 2 | ||||
-rw-r--r-- | mock_dynamic_partition_control.h | 4 | ||||
-rw-r--r-- | payload_consumer/postinstall_runner_action.cc | 3 |
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 { |