Added support for Resize Task

Test: tested flashall on raven
Bug: 194686221
Change-Id: I60586756b2d5f99848a664def8204c0bd47d7e67
This commit is contained in:
Daniel Zheng 2023-03-03 07:16:46 +00:00
parent 6bb8baa929
commit 9f7bf7eff3
3 changed files with 35 additions and 7 deletions

View File

@ -1631,13 +1631,13 @@ void FlashAllTool::Flash() {
update_super_task->Run();
// Resize any logical partition to 0, so each partition is reset to 0
// extents, and will achieve more optimal allocation.
std::vector<std::unique_ptr<ResizeTask>> resize_tasks;
for (const auto& [image, slot] : os_images_) {
auto resize_partition = [](const std::string& partition) -> void {
if (is_logical(partition)) {
fb->ResizePartition(partition, "0");
}
};
do_for_partitions(image->part_name, slot, resize_partition, false);
resize_tasks.emplace_back(
std::make_unique<ResizeTask>(fp_, image->part_name, "0", slot));
}
for (auto& i : resize_tasks) {
i->Run();
}
}
FlashImages(os_images_);
@ -2356,7 +2356,9 @@ int FastBootTool::Main(int argc, char* argv[]) {
} else if (command == FB_CMD_RESIZE_PARTITION) {
std::string partition = next_arg(&args);
std::string size = next_arg(&args);
fb->ResizePartition(partition, size);
std::unique_ptr<ResizeTask> resize_task =
std::make_unique<ResizeTask>(fp.get(), partition, size, slot_override);
resize_task->Run();
} else if (command == "gsi") {
std::string arg = next_arg(&args);
if (arg == "wipe") {

View File

@ -167,3 +167,16 @@ void UpdateSuperTask::Run() {
}
fp_->fb->RawCommand(command, "Updating super partition");
}
ResizeTask::ResizeTask(FlashingPlan* fp, const std::string& pname, const std::string& size,
const std::string& slot)
: fp_(fp), pname_(pname), size_(size), slot_(slot) {}
void ResizeTask::Run() {
auto resize_partition = [this](const std::string& partition) -> void {
if (is_logical(partition)) {
fp_->fb->ResizePartition(partition, size_);
}
};
do_for_partitions(pname_, slot_, resize_partition, false);
}

View File

@ -79,3 +79,16 @@ class UpdateSuperTask : public Task {
private:
FlashingPlan* fp_;
};
class ResizeTask : public Task {
public:
ResizeTask(FlashingPlan* fp, const std::string& pname, const std::string& size,
const std::string& slot);
void Run() override;
private:
FlashingPlan* fp_;
const std::string pname_;
const std::string size_;
const std::string slot_;
};