Loading fastboot/device/commands.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -329,12 +329,14 @@ class PartitionBuilder { MetadataBuilder* operator->() const { return builder_.get(); } private: FastbootDevice* device_; std::string super_device_; uint32_t slot_number_; std::unique_ptr<MetadataBuilder> builder_; }; PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name) { PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name) : device_(device) { std::string slot_suffix = GetSuperSlotSuffix(device, partition_name); slot_number_ = SlotNumberForSlotSuffix(slot_suffix); auto super_device = FindPhysicalPartition(fs_mgr_get_super_partition_name(slot_number_)); Loading @@ -350,7 +352,7 @@ bool PartitionBuilder::Write() { if (!metadata) { return false; } return UpdateAllPartitionMetadata(super_device_, *metadata.get()); return UpdateAllPartitionMetadata(device_, super_device_, *metadata.get()); } bool CreatePartitionHandler(FastbootDevice* device, const std::vector<std::string>& args) { Loading fastboot/device/flashing.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ bool UpdateSuper(FastbootDevice* device, const std::string& super_name, bool wip } // Write the new table to every metadata slot. if (!UpdateAllPartitionMetadata(super_name, *new_metadata.get())) { if (!UpdateAllPartitionMetadata(device, super_name, *new_metadata.get())) { return device->WriteFail("Unable to write new partition table"); } fs_mgr_overlayfs_teardown(); Loading fastboot/device/utility.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -200,10 +200,16 @@ bool GetDeviceLockStatus() { return cmdline.find("androidboot.verifiedbootstate=orange") == std::string::npos; } bool UpdateAllPartitionMetadata(const std::string& super_name, bool UpdateAllPartitionMetadata(FastbootDevice* device, const std::string& super_name, const android::fs_mgr::LpMetadata& metadata) { size_t num_slots = 1; auto boot_control_hal = device->boot_control_hal(); if (boot_control_hal) { num_slots = boot_control_hal->getNumberSlots(); } bool ok = true; for (size_t i = 0; i < metadata.geometry.metadata_slot_count; i++) { for (size_t i = 0; i < num_slots; i++) { ok &= UpdatePartitionTable(super_name, metadata, i); } return ok; Loading fastboot/device/utility.h +1 −1 Original line number Diff line number Diff line Loading @@ -68,5 +68,5 @@ std::vector<std::string> ListPartitions(FastbootDevice* device); bool GetDeviceLockStatus(); // Update all copies of metadata. bool UpdateAllPartitionMetadata(const std::string& super_name, bool UpdateAllPartitionMetadata(FastbootDevice* device, const std::string& super_name, const android::fs_mgr::LpMetadata& metadata); Loading
fastboot/device/commands.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -329,12 +329,14 @@ class PartitionBuilder { MetadataBuilder* operator->() const { return builder_.get(); } private: FastbootDevice* device_; std::string super_device_; uint32_t slot_number_; std::unique_ptr<MetadataBuilder> builder_; }; PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name) { PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name) : device_(device) { std::string slot_suffix = GetSuperSlotSuffix(device, partition_name); slot_number_ = SlotNumberForSlotSuffix(slot_suffix); auto super_device = FindPhysicalPartition(fs_mgr_get_super_partition_name(slot_number_)); Loading @@ -350,7 +352,7 @@ bool PartitionBuilder::Write() { if (!metadata) { return false; } return UpdateAllPartitionMetadata(super_device_, *metadata.get()); return UpdateAllPartitionMetadata(device_, super_device_, *metadata.get()); } bool CreatePartitionHandler(FastbootDevice* device, const std::vector<std::string>& args) { Loading
fastboot/device/flashing.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ bool UpdateSuper(FastbootDevice* device, const std::string& super_name, bool wip } // Write the new table to every metadata slot. if (!UpdateAllPartitionMetadata(super_name, *new_metadata.get())) { if (!UpdateAllPartitionMetadata(device, super_name, *new_metadata.get())) { return device->WriteFail("Unable to write new partition table"); } fs_mgr_overlayfs_teardown(); Loading
fastboot/device/utility.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -200,10 +200,16 @@ bool GetDeviceLockStatus() { return cmdline.find("androidboot.verifiedbootstate=orange") == std::string::npos; } bool UpdateAllPartitionMetadata(const std::string& super_name, bool UpdateAllPartitionMetadata(FastbootDevice* device, const std::string& super_name, const android::fs_mgr::LpMetadata& metadata) { size_t num_slots = 1; auto boot_control_hal = device->boot_control_hal(); if (boot_control_hal) { num_slots = boot_control_hal->getNumberSlots(); } bool ok = true; for (size_t i = 0; i < metadata.geometry.metadata_slot_count; i++) { for (size_t i = 0; i < num_slots; i++) { ok &= UpdatePartitionTable(super_name, metadata, i); } return ok; Loading
fastboot/device/utility.h +1 −1 Original line number Diff line number Diff line Loading @@ -68,5 +68,5 @@ std::vector<std::string> ListPartitions(FastbootDevice* device); bool GetDeviceLockStatus(); // Update all copies of metadata. bool UpdateAllPartitionMetadata(const std::string& super_name, bool UpdateAllPartitionMetadata(FastbootDevice* device, const std::string& super_name, const android::fs_mgr::LpMetadata& metadata);