summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2023-01-15 15:46:06 -0800
committerLinux Build Service Account <lnxbuild@localhost>2023-01-15 15:46:06 -0800
commit6222f8d45f9f4e9a96c60144f36f53aa2e806bf4 (patch)
tree2dd5636ff95f228ed4459b59f182f96366ccd339
parent7565c863a18f5b31533b1dfb1f923b8cdc2629af (diff)
parent1f80083e23233f8741042e328593a9b0690cd28e (diff)
Merge 1f80083e23233f8741042e328593a9b0690cd28e on remote branch
Change-Id: I0a6fe9332121cc584e72bce25b9af0dfbc3fffea
-rw-r--r--aosp/dynamic_partition_control_android.cc9
-rw-r--r--aosp/update_attempter_android.cc1
2 files changed, 9 insertions, 1 deletions
diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc
index 27d1d541..334ccdc2 100644
--- a/aosp/dynamic_partition_control_android.cc
+++ b/aosp/dynamic_partition_control_android.cc
@@ -98,7 +98,8 @@ constexpr std::chrono::milliseconds kMapTimeout{1000};
constexpr std::chrono::milliseconds kMapSnapshotTimeout{10000};
DynamicPartitionControlAndroid::~DynamicPartitionControlAndroid() {
- Cleanup();
+ UnmapAllPartitions();
+ metadata_device_.reset();
}
static FeatureFlag GetFeatureFlag(const char* enable_prop,
@@ -312,6 +313,12 @@ bool DynamicPartitionControlAndroid::UnmapAllPartitions() {
void DynamicPartitionControlAndroid::Cleanup() {
UnmapAllPartitions();
metadata_device_.reset();
+ if (GetVirtualAbFeatureFlag().IsEnabled()) {
+ snapshot_ = SnapshotManager::New();
+ } else {
+ snapshot_ = SnapshotManagerStub::New();
+ }
+ CHECK(snapshot_ != nullptr) << "Cannot initialize SnapshotManager.";
}
bool DynamicPartitionControlAndroid::DeviceExists(const std::string& path) {
diff --git a/aosp/update_attempter_android.cc b/aosp/update_attempter_android.cc
index a3485eac..1d35b5e7 100644
--- a/aosp/update_attempter_android.cc
+++ b/aosp/update_attempter_android.cc
@@ -263,6 +263,7 @@ bool UpdateAttempterAndroid::ApplyPayload(
install_plan_.is_resume = !payload_id.empty() &&
DeltaPerformer::CanResumeUpdate(prefs_, payload_id);
if (!install_plan_.is_resume) {
+ boot_control_->GetDynamicPartitionControl()->Cleanup();
// No need to reset dynamic_partititon_metadata_updated. If previous calls
// to AllocateSpaceForPayload uses the same payload_id, reuse preallocated
// space. Otherwise, DeltaPerformer re-allocates space when the payload is