Merge "fastboot: Fix flashing failure when a sparse image has an avb footer." into main am: ee4c926247
Original change: https://android-review.googlesource.com/c/platform/system/core/+/2798383 Change-Id: I474c1f3d1549abe62cd6f1c5c0cc8a710b471dd7 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
ee64b2df4f
2 changed files with 13 additions and 1 deletions
|
@ -1053,8 +1053,10 @@ static bool load_buf_fd(unique_fd fd, struct fastboot_buffer* buf, const Flashin
|
|||
return false;
|
||||
}
|
||||
sparse_file_destroy(s);
|
||||
buf->file_type = FB_BUFFER_SPARSE;
|
||||
} else {
|
||||
buf->image_size = sz;
|
||||
buf->file_type = FB_BUFFER_FD;
|
||||
}
|
||||
|
||||
lseek(fd.get(), 0, SEEK_SET);
|
||||
|
@ -1191,6 +1193,15 @@ static void copy_avb_footer(const ImageSource* source, const std::string& partit
|
|||
should_flash_in_userspace(source, partition)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If the image is sparse, moving the footer will simply corrupt the sparse
|
||||
// format, so currently we don't support moving the footer on sparse files.
|
||||
if (buf->file_type == FB_BUFFER_SPARSE) {
|
||||
LOG(ERROR) << "Warning: skip copying " << partition << " image avb footer due to sparse "
|
||||
<< "image.";
|
||||
return;
|
||||
}
|
||||
|
||||
// If overflows and negative, it should be < buf->sz.
|
||||
int64_t partition_size = static_cast<int64_t>(get_partition_size(partition));
|
||||
|
||||
|
|
|
@ -57,7 +57,8 @@ enum fb_buffer_type {
|
|||
};
|
||||
|
||||
struct fastboot_buffer {
|
||||
enum fb_buffer_type type;
|
||||
fb_buffer_type type;
|
||||
fb_buffer_type file_type;
|
||||
std::vector<SparsePtr> files;
|
||||
int64_t sz;
|
||||
unique_fd fd;
|
||||
|
|
Loading…
Reference in a new issue