Loading fastboot/fastboot.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -1413,12 +1413,19 @@ void do_for_partitions(const std::string& part, const std::string& slot, } } bool is_retrofit_device(fastboot::IFastBootDriver* fb) { std::string value; if (fb->GetVar("super-partition-name", &value) != fastboot::SUCCESS) { bool is_retrofit_device(const ImageSource* source) { // Does this device use dynamic partitions at all? std::vector<char> contents; if (!source->ReadFile("super_empty.img", &contents)) { return false; } return android::base::StartsWith(value, "system_"); auto metadata = android::fs_mgr::ReadFromImageBlob(contents.data(), contents.size()); for (const auto& partition : metadata->partitions) { if (partition.attributes & LP_PARTITION_ATTR_SLOT_SUFFIXED) { return true; } } return false; } // Fetch a partition from the device to a given fd. This is a wrapper over FetchToFd to fetch Loading Loading @@ -1876,7 +1883,7 @@ std::vector<std::unique_ptr<Task>> FlashAllTool::CollectTasksFromImageList() { // On these devices, secondary slots must be flashed as physical // partitions (otherwise they would not mount on first boot). To enforce // this, we delete any logical partitions for the "other" slot. if (is_retrofit_device(fp_->fb)) { if (is_retrofit_device(fp_->source)) { std::string partition_name = image->part_name + "_" + slot; if (image->IsSecondary() && should_flash_in_userspace(partition_name)) { tasks.emplace_back(std::make_unique<DeleteTask>(fp_, partition_name)); Loading fastboot/fastboot.h +1 −1 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ int64_t get_sparse_limit(int64_t size, const FlashingPlan* fp); std::vector<SparsePtr> resparse_file(sparse_file* s, int64_t max_size); bool supports_AB(fastboot::IFastBootDriver* fb); bool is_retrofit_device(fastboot::IFastBootDriver* fb); bool is_retrofit_device(const ImageSource* source); bool is_logical(const std::string& partition); void fb_perform_format(const std::string& partition, int skip_if_not_supported, const std::string& type_override, const std::string& size_override, Loading Loading
fastboot/fastboot.cpp +12 −5 Original line number Diff line number Diff line Loading @@ -1413,12 +1413,19 @@ void do_for_partitions(const std::string& part, const std::string& slot, } } bool is_retrofit_device(fastboot::IFastBootDriver* fb) { std::string value; if (fb->GetVar("super-partition-name", &value) != fastboot::SUCCESS) { bool is_retrofit_device(const ImageSource* source) { // Does this device use dynamic partitions at all? std::vector<char> contents; if (!source->ReadFile("super_empty.img", &contents)) { return false; } return android::base::StartsWith(value, "system_"); auto metadata = android::fs_mgr::ReadFromImageBlob(contents.data(), contents.size()); for (const auto& partition : metadata->partitions) { if (partition.attributes & LP_PARTITION_ATTR_SLOT_SUFFIXED) { return true; } } return false; } // Fetch a partition from the device to a given fd. This is a wrapper over FetchToFd to fetch Loading Loading @@ -1876,7 +1883,7 @@ std::vector<std::unique_ptr<Task>> FlashAllTool::CollectTasksFromImageList() { // On these devices, secondary slots must be flashed as physical // partitions (otherwise they would not mount on first boot). To enforce // this, we delete any logical partitions for the "other" slot. if (is_retrofit_device(fp_->fb)) { if (is_retrofit_device(fp_->source)) { std::string partition_name = image->part_name + "_" + slot; if (image->IsSecondary() && should_flash_in_userspace(partition_name)) { tasks.emplace_back(std::make_unique<DeleteTask>(fp_, partition_name)); Loading
fastboot/fastboot.h +1 −1 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ int64_t get_sparse_limit(int64_t size, const FlashingPlan* fp); std::vector<SparsePtr> resparse_file(sparse_file* s, int64_t max_size); bool supports_AB(fastboot::IFastBootDriver* fb); bool is_retrofit_device(fastboot::IFastBootDriver* fb); bool is_retrofit_device(const ImageSource* source); bool is_logical(const std::string& partition); void fb_perform_format(const std::string& partition, int skip_if_not_supported, const std::string& type_override, const std::string& size_override, Loading