Mount all partitions before running postinstall
For Virtual AB Compression, we need to mount snapshotted partitions
manually.
Test: treehugger
Change-Id: I15af8375e393ce2539d2075b467e8dbe94bec247
diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index 91c3a64..d51241f 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -56,8 +56,22 @@
void PostinstallRunnerAction::PerformAction() {
CHECK(HasInputObject());
+ CHECK(boot_control_);
install_plan_ = GetInputObject();
+ auto dynamic_control = boot_control_->GetDynamicPartitionControl();
+ CHECK(dynamic_control);
+
+ // Mount snapshot partitions for Virtual AB Compression Compression.
+ if (dynamic_control->GetVirtualAbCompressionFeatureFlag().IsEnabled()) {
+ // Before calling MapAllPartitions to map snapshot devices, all CowWriters
+ // must be closed, and MapAllPartitions() should be called.
+ dynamic_control->UnmapAllPartitions();
+ if (!dynamic_control->MapAllPartitions()) {
+ return CompletePostinstall(ErrorCode::kPostInstallMountError);
+ }
+ }
+
// We always powerwash when rolling back, however policy can determine
// if this is a full/normal powerwash, or a special rollback powerwash
// that retains a small amount of system state such as enrollment and