diff options
-rw-r--r-- | dynamic_partition_control_android.cc | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/dynamic_partition_control_android.cc b/dynamic_partition_control_android.cc index d9d3be56..5a2ccb1d 100644 --- a/dynamic_partition_control_android.cc +++ b/dynamic_partition_control_android.cc @@ -39,6 +39,7 @@ using android::base::Join; using android::dm::DeviceMapper; using android::dm::DmDeviceState; using android::fs_mgr::CreateLogicalPartition; +using android::fs_mgr::CreateLogicalPartitionParams; using android::fs_mgr::DestroyLogicalPartition; using android::fs_mgr::MetadataBuilder; using android::fs_mgr::Partition; @@ -86,12 +87,15 @@ bool DynamicPartitionControlAndroid::MapPartitionInternal( uint32_t slot, bool force_writable, std::string* path) { - if (!CreateLogicalPartition(super_device.c_str(), - slot, - target_partition_name, - force_writable, - std::chrono::milliseconds(kMapTimeoutMillis), - path)) { + CreateLogicalPartitionParams params = { + .block_device = super_device, + .metadata_slot = slot, + .partition_name = target_partition_name, + .force_writable = force_writable, + .timeout_ms = std::chrono::milliseconds(kMapTimeoutMillis), + }; + + if (!CreateLogicalPartition(params, path)) { LOG(ERROR) << "Cannot map " << target_partition_name << " in " << super_device << " on device mapper."; return false; @@ -165,6 +169,9 @@ bool DynamicPartitionControlAndroid::UnmapPartitionOnDeviceMapper( } void DynamicPartitionControlAndroid::CleanupInternal(bool wait) { + if (mapped_devices_.empty()) { + return; + } // UnmapPartitionOnDeviceMapper removes objects from mapped_devices_, hence // a copy is needed for the loop. std::set<std::string> mapped = mapped_devices_; |