summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dynamic_partition_control_android.cc19
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_;