liblp: Allow GSI metadata to bypass slot suffixing checks.
Bug: 121210348 Test: manual test Change-Id: I40634c72b0255197a5c16e23553f4cf54bc32579
This commit is contained in:
parent
189727089e
commit
126e481972
2 changed files with 10 additions and 2 deletions
|
@ -212,7 +212,7 @@ void MetadataBuilder::OverrideABForTesting(bool ab_device) {
|
|||
sABOverrideValue = ab_device;
|
||||
}
|
||||
|
||||
MetadataBuilder::MetadataBuilder() : auto_slot_suffixing_(false) {
|
||||
MetadataBuilder::MetadataBuilder() : auto_slot_suffixing_(false), ignore_slot_suffixing_(false) {
|
||||
memset(&geometry_, 0, sizeof(geometry_));
|
||||
geometry_.magic = LP_METADATA_GEOMETRY_MAGIC;
|
||||
geometry_.struct_size = sizeof(geometry_);
|
||||
|
@ -436,7 +436,7 @@ Partition* MetadataBuilder::AddPartition(const std::string& name, const std::str
|
|||
LERROR << "Could not find partition group: " << group_name;
|
||||
return nullptr;
|
||||
}
|
||||
if (IsABDevice() && !auto_slot_suffixing_ && name != "scratch" &&
|
||||
if (IsABDevice() && !auto_slot_suffixing_ && name != "scratch" && !ignore_slot_suffixing_ &&
|
||||
GetPartitionSlotSuffix(name).empty()) {
|
||||
LERROR << "Unsuffixed partition not allowed on A/B device: " << name;
|
||||
return nullptr;
|
||||
|
@ -972,6 +972,10 @@ void MetadataBuilder::SetAutoSlotSuffixing() {
|
|||
auto_slot_suffixing_ = true;
|
||||
}
|
||||
|
||||
void MetadataBuilder::IgnoreSlotSuffixing() {
|
||||
ignore_slot_suffixing_ = true;
|
||||
}
|
||||
|
||||
bool MetadataBuilder::IsABDevice() const {
|
||||
if (sABOverrideSet) {
|
||||
return sABOverrideValue;
|
||||
|
|
|
@ -248,6 +248,9 @@ class MetadataBuilder {
|
|||
// Set the LP_METADATA_AUTO_SLOT_SUFFIXING flag.
|
||||
void SetAutoSlotSuffixing();
|
||||
|
||||
// If set, checks for slot suffixes will be ignored internally.
|
||||
void IgnoreSlotSuffixing();
|
||||
|
||||
bool GetBlockDeviceInfo(const std::string& partition_name, BlockDeviceInfo* info) const;
|
||||
bool UpdateBlockDeviceInfo(const std::string& partition_name, const BlockDeviceInfo& info);
|
||||
|
||||
|
@ -310,6 +313,7 @@ class MetadataBuilder {
|
|||
std::vector<std::unique_ptr<PartitionGroup>> groups_;
|
||||
std::vector<LpMetadataBlockDevice> block_devices_;
|
||||
bool auto_slot_suffixing_;
|
||||
bool ignore_slot_suffixing_;
|
||||
};
|
||||
|
||||
// Read BlockDeviceInfo for a given block device. This always returns false
|
||||
|
|
Loading…
Reference in a new issue