summaryrefslogtreecommitdiff
path: root/aosp/dynamic_partition_control_android.h
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2021-04-18 12:53:07 -0700
committerLinux Build Service Account <lnxbuild@localhost>2021-04-18 12:53:07 -0700
commitcb81ab091697e25f1b332c7e8f128cbe174ba141 (patch)
treee7c44a4b9bae8a98c9a6075dddc68e064ad616c2 /aosp/dynamic_partition_control_android.h
parenta1531c020edb7ad659164d6be96378fad956b61b (diff)
parentaae41a1bf81c4141ebd5c61d1295d165bdc897a3 (diff)
Merge aae41a1bf81c4141ebd5c61d1295d165bdc897a3 on remote branch
Change-Id: I54f3f25d6d84de3386d38b6c2a851d0c472fd9c8
Diffstat (limited to 'aosp/dynamic_partition_control_android.h')
-rw-r--r--aosp/dynamic_partition_control_android.h24
1 files changed, 18 insertions, 6 deletions
diff --git a/aosp/dynamic_partition_control_android.h b/aosp/dynamic_partition_control_android.h
index d7c8781a..b7aa7eaa 100644
--- a/aosp/dynamic_partition_control_android.h
+++ b/aosp/dynamic_partition_control_android.h
@@ -20,6 +20,7 @@
#include <memory>
#include <set>
#include <string>
+#include <string_view>
#include <vector>
#include <base/files/file_util.h>
@@ -33,7 +34,11 @@ namespace chromeos_update_engine {
class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
public:
- DynamicPartitionControlAndroid();
+ // A directory where all partitions mapped by VABC is expected to be found.
+ // Per earlier discussion with VAB team, this directory is unlikely to change.
+ // So we declare it as a constant here.
+ static constexpr std::string_view VABC_DEVICE_DIR = "/dev/block/mapper/";
+ explicit DynamicPartitionControlAndroid(uint32_t source_slot);
~DynamicPartitionControlAndroid();
FeatureFlag GetDynamicPartitionsFeatureFlag() override;
@@ -99,13 +104,13 @@ class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
const std::string& unsuffixed_partition_name,
const std::optional<std::string>& source_path,
bool is_append) override;
- FileDescriptorPtr OpenCowReader(const std::string& unsuffixed_partition_name,
- const std::optional<std::string>&,
- bool is_append = false) override;
+ FileDescriptorPtr OpenCowFd(const std::string& unsuffixed_partition_name,
+ const std::optional<std::string>&,
+ bool is_append = false) override;
bool UnmapAllPartitions() override;
- bool IsDynamicPartition(const std::string& part_name) override;
+ bool IsDynamicPartition(const std::string& part_name, uint32_t slot) override;
bool UpdateUsesSnapshotCompression() override;
@@ -253,6 +258,13 @@ class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
const DeltaArchiveManifest& manifest,
uint64_t* required_size);
+ // Returns true if the allocatable space in super partition is larger than
+ // the size of dynamic partition groups in the manifest.
+ bool CheckSuperPartitionAllocatableSpace(
+ android::fs_mgr::MetadataBuilder* builder,
+ const DeltaArchiveManifest& manifest,
+ bool use_snapshot);
+
enum class DynamicPartitionDeviceStatus {
SUCCESS,
ERROR,
@@ -324,7 +336,7 @@ class DynamicPartitionControlAndroid : public DynamicPartitionControlInterface {
uint32_t source_slot_ = UINT32_MAX;
uint32_t target_slot_ = UINT32_MAX;
- std::vector<std::string> dynamic_partition_list_;
+ std::vector<std::vector<std::string>> dynamic_partition_list_{2UL};
DISALLOW_COPY_AND_ASSIGN(DynamicPartitionControlAndroid);
};