fastboot: Resize logical partitions when using the flash command.

If an image size changes slightly in between "flashall" and some change
in the build, it's inconvenient to have to reflash the whole device again.
This patch resizes partitions when using a normal flash command, to
improve the developer workflow.

Bug: N/A
Test: fastboot flash system
Change-Id: I349364a4742a0c15748f545fcfda946107720d45
This commit is contained in:
David Anderson 2018-10-25 12:51:25 -07:00
parent 0444a8cbd9
commit 629e51c109
1 changed files with 8 additions and 5 deletions

View File

@ -1096,12 +1096,20 @@ static void do_for_partitions(const std::string& part, const std::string& slot,
}
}
static bool is_logical(const std::string& partition) {
std::string value;
return fb->GetVar("is-logical:" + partition, &value) == fastboot::SUCCESS && value == "yes";
}
static void do_flash(const char* pname, const char* fname) {
struct fastboot_buffer buf;
if (!load_buf(fname, &buf)) {
die("cannot load '%s': %s", fname, strerror(errno));
}
if (is_logical(pname)) {
fb->ResizePartition(pname, std::to_string(buf.image_size));
}
flash_buf(pname, &buf);
}
@ -1144,11 +1152,6 @@ static bool if_partition_exists(const std::string& partition, const std::string&
return fb->GetVar("partition-size:" + partition_name, &partition_size) == fastboot::SUCCESS;
}
static bool is_logical(const std::string& partition) {
std::string value;
return fb->GetVar("is-logical:" + partition, &value) == fastboot::SUCCESS && value == "yes";
}
static void reboot_to_userspace_fastboot() {
fb->RebootTo("fastboot");