Map target partitions with force_writable when resuming an update.
am: 35410ede7a

Change-Id: Ic3640b143b9c20b8d353bb5cc47b56dd51dca0c1
diff --git a/boot_control_android.cc b/boot_control_android.cc
index 2d2b77e..7d02ee2 100644
--- a/boot_control_android.cc
+++ b/boot_control_android.cc
@@ -157,6 +157,8 @@
 
   DmDeviceState state = dynamic_control_->GetState(partition_name_suffix);
 
+  // Device is mapped in the previous GetPartitionDevice() call. Just return
+  // the path.
   if (state == DmDeviceState::ACTIVE) {
     if (dynamic_control_->GetDmDevicePathByName(partition_name_suffix,
                                                 device)) {
@@ -168,16 +170,12 @@
     return DynamicPartitionDeviceStatus::ERROR;
   }
 
-  // DeltaPerformer calls InitPartitionMetadata before calling
-  // InstallPlan::LoadPartitionsFromSlots. After InitPartitionMetadata,
-  // the target partition must be re-mapped with force_writable == true.
-  // Hence, if it is not mapped, we assume it is a source partition and
-  // map it without force_writable.
   if (state == DmDeviceState::INVALID) {
+    bool force_writable = slot != GetCurrentSlot();
     if (dynamic_control_->MapPartitionOnDeviceMapper(super_device,
                                                      partition_name_suffix,
                                                      slot,
-                                                     false /* force_writable */,
+                                                     force_writable,
                                                      device)) {
       return DynamicPartitionDeviceStatus::SUCCESS;
     }