From 23af112314e4edbed9a2fb61b7dbff6db2b92b60 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 10 Nov 2017 08:42:17 -0800 Subject: fastboot: show how long extraction takes. Before: extracting android-info.txt (0 MB)... extracting boot.img (29 MB)... target reported max download size of 536870912 bytes archive does not contain 'boot.sig' archive does not contain 'boot_other.img' archive does not contain 'dtbo.img' archive does not contain 'dt.img' archive does not contain 'recovery.img' extracting system.img (1928 MB)... archive does not contain 'system.sig' extracting system_other.img (574 MB)... archive does not contain 'system.sig' archive does not contain 'vbmeta.img' After: extracting android-info.txt (0 MB) to RAM... extracting boot.img (29 MB) to disk... took 0.232s target reported max download size of 536870912 bytes archive does not contain 'boot.sig' archive does not contain 'boot_other.img' archive does not contain 'dtbo.img' archive does not contain 'dt.img' archive does not contain 'recovery.img' extracting system.img (1928 MB) to disk... took 10.122s archive does not contain 'system.sig' extracting system_other.img (574 MB) to disk... took 3.424s archive does not contain 'system.sig' archive does not contain 'vbmeta.img' Bug: http://b/69128980 Test: ran manually Change-Id: Ib190d1cc56ad9da06a4f9a9e822f7dad4a9a53b7 --- fastboot/fastboot.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'fastboot/fastboot.cpp') diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index 40c18e002..6175f59ef 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -485,7 +485,7 @@ static void* load_bootable_image(const std::string& kernel, const std::string& r return bdata; } -static void* unzip_file(ZipArchiveHandle zip, const char* entry_name, int64_t* sz) { +static void* unzip_to_memory(ZipArchiveHandle zip, const char* entry_name, int64_t* sz) { ZipString zip_entry_name(entry_name); ZipEntry zip_entry; if (FindEntry(zip, zip_entry_name, &zip_entry) != 0) { @@ -495,7 +495,7 @@ static void* unzip_file(ZipArchiveHandle zip, const char* entry_name, int64_t* s *sz = zip_entry.uncompressed_length; - fprintf(stderr, "extracting %s (%" PRId64 " MB)...\n", entry_name, *sz / 1024 / 1024); + fprintf(stderr, "extracting %s (%" PRId64 " MB) to RAM...\n", entry_name, *sz / 1024 / 1024); uint8_t* data = reinterpret_cast(malloc(zip_entry.uncompressed_length)); if (data == nullptr) die("failed to allocate %" PRId64 " bytes for '%s'", *sz, entry_name); @@ -613,17 +613,20 @@ static int unzip_to_file(ZipArchiveHandle zip, const char* entry_name) { return -1; } - fprintf(stderr, "extracting %s (%" PRIu32 " MB)...\n", entry_name, + fprintf(stderr, "extracting %s (%" PRIu32 " MB) to disk...", entry_name, zip_entry.uncompressed_length / 1024 / 1024); + double start = now(); int error = ExtractEntryToFile(zip, &zip_entry, fd); if (error != 0) { - die("failed to extract '%s': %s", entry_name, ErrorCodeString(error)); + die("\nfailed to extract '%s': %s", entry_name, ErrorCodeString(error)); } if (lseek(fd, 0, SEEK_SET) != 0) { - die("lseek on extracted file '%s' failed: %s", entry_name, strerror(errno)); + die("\nlseek on extracted file '%s' failed: %s", entry_name, strerror(errno)); } + fprintf(stderr, " took %.3fs\n", now() - start); + return fd.release(); } @@ -1091,7 +1094,7 @@ static void do_flash(Transport* transport, const char* pname, const char* fname) static void do_update_signature(ZipArchiveHandle zip, const char* filename) { int64_t sz; - void* data = unzip_file(zip, filename, &sz); + void* data = unzip_to_memory(zip, filename, &sz); if (data == nullptr) return; fb_queue_download("signature", data, sz); fb_queue_command("signature", "installing signature"); @@ -1130,7 +1133,7 @@ static void do_update(Transport* transport, const char* filename, const std::str } int64_t sz; - void* data = unzip_file(zip, "android-info.txt", &sz); + void* data = unzip_to_memory(zip, "android-info.txt", &sz); if (data == nullptr) { die("update package '%s' has no android-info.txt", filename); } -- cgit v1.2.3