summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-08-17 23:04:05 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-08-17 23:04:05 +0000
commit163dfa433a23cb72260249c93ed1bc9c67bbd91c (patch)
treee1b19610b99d5b79095d5b786067b48ea6b26cc4
parent699d5d5938d833dda72619ca7fcc09049a6e427c (diff)
parente413b90a0fcc4cb7facce25dcffbffa6c4d66028 (diff)
Snap for 5811156 from e413b90a0fcc4cb7facce25dcffbffa6c4d66028 to rvc-release
Change-Id: I2c5574fa04b74366029e8b31fde83f3b90e219de
-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_;