summaryrefslogtreecommitdiffstats
path: root/otautil (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-04-26Rename CacheLocation to Paths.Tao Bao4-88/+111
We have a general need for overriding more paths (e.g. "/tmp"), mostly for testing purpose. Rename CacheLocation to Paths, and use that to manage TEMPORARY_{INSTALL,LOG}_FILE. Test: mmma -j bootable/recovery Test: recovery_component_test Change-Id: Ia8ce8e5695df37ca434f13ac4d3206de1e8e9396
2018-04-13Remove the old log files if cache space is insufficient for OTATianjie Xu2-1/+13
We set the limit of the max stash size to 80% of cache size. But the cache space can still be insufficient for the update if the log files occupy a large chunk of /cache. So remove the old logs for now to make room for the update. Bug: 77528881 Test: unit tests pass Change-Id: Ia8bcb0ace11f8164ad9290bfb360e08e31d282cb
2018-03-08Set the update locations to default in CacheLocation's constructorTianjie Xu2-9/+5
Otherwise the applypatch executable will fail to back up the source file to /cache when patching the recovery image. Bug: 74198354 Test: run applypatch from boot to recovery Change-Id: I6e5b9cd06d6ed0b26066b779a348437ecf984b92
2018-02-28Add a singleton CacheLocation to replace the hard coded locationsTianjie Xu3-0/+105
This class allows us to set the following locations dynamically: cache_temp_source, last_command_file, stash_directory_base. In the updater's main function, we reset the values of these variables to their default locations in /cache; while we can set them to temp files in unit tests or host simulation. Test: unit tests pass Change-Id: I528652650caa41373617ab055d41b1f1a4ec0f87
2017-11-09Load-balancing update_verifier worker threads.Tao Bao2-0/+48
Prior to this CL, the block verification works were assigned based on the pattern of the ranges, which could lead to unbalanced workloads. This CL adds RangeSet::Split() and moves update_verifier over. a) For the following care_map.txt on walleye: system 20,0,347,348,540,556,32770,33084,98306,98620,163842,164156,229378,229692,294914,295228,524289,524291,524292,524348,529059 vendor 8,0,120,135,32770,32831,94564,98304,98306 Measured the time costs prior to and with this CL with the following script. $ cat test_update_verifier.sh #!/bin/sh adb shell stop adb shell "cp /data/local/tmp/care_map.txt /data/ota_package/" for i in $(seq 1 50) do echo "Iteration: $i" adb shell "bootctl set-active-boot-slot 0" adb shell "echo 3 > /proc/sys/vm/drop_caches" adb shell "time /data/local/tmp/update_verifier" sleep 3 done Without this CL, the average time cost is 5.66s, while with the CL it's reduced to 3.2s. b) For the following care_map.txt, measured the performance on marlin: system 18,0,271,286,457,8350,32770,33022,98306,98558,163842,164094,196609,204800,229378,229630,294914,295166,501547 vendor 10,0,42,44,85,2408,32770,32806,32807,36902,74242 It takes 12.9s and 5.6s without and with the CL respectively. Fixes: 68553827 Test: recovery_unit_test Test: Flash new build and trigger update_verifier. Check the balanced block verification. Change-Id: I5fa4bf09a84e6b9b0975ee5f522724464181333f
2017-11-07otautil: Remove the aborts in RangeSet::Parse().Tao Bao2-40/+87
We used to CHECK and abort on parsing errors. While it works fine for the updater use case (because recovery starts updater in a forked process and collects the process exit code), it's difficult for other clients to use RangeSet as a library (e.g. update_verifier). This CL switches the aborts to returning empty RangeSet instead. Callers need to check the parsing results explicitly. The CL also separates RangeSet::PushBack() into a function, and moves SortedRangeSet::Clear() into RangeSet. Test: recovery_unit_test Test: Sideload an OTA package with the new updater on angler. Test: Sideload an OTA package with injected range string errors. The updater aborts from the explicit checks. Change-Id: If2b7f6f41dc93af917a21c7877a83e98dc3fd016
2017-10-16otautil: Move RangeSet implementation into rangeset.cpp.Tao Bao3-151/+216
Since it has grown much larger, users of the header shouldn't compile and carry their full copies. Also add missing header includes in imgdiff.cpp and imgdiff_test.cpp. Test: mmma bootable/recovery Test: recovery_unit_test; recovery_component_test; recovery_host_test Change-Id: I88ca54171765e5606ab0d61580fbc1ada578fd7d
2017-10-11otautil: #include <errno.h> for TEMP_FAILURE_RETRY.Tao Bao1-0/+1
Test: mmma bootable/recovery Change-Id: I5959303528c6f704f10ce153f6fcb2054ce35b1e
2017-10-11Move rangeset.h and print_sha1.h into otautil.Tao Bao2-0/+325
Also drop the "bootable/recovery" path in LOCAL_C_INCLUDES from applypatch modules. Test: lunch aosp_{angler,bullhead,fugu,dragon,sailfish}-userdebug; mmma bootable/recovery Change-Id: Idd602a796894f971ee4f8fa3eafe36c42d9de986
2017-10-10otautil: Fix mac build.Tao Bao2-3/+4
bootable/recovery/otautil/SysUtil.cpp:103:19: error: use of undeclared identifier 'mmap64'; did you mean 'mmap'? void* reserve = mmap64(nullptr, blocks * blksize, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0); ^~~~~~ Test: mmma bootable/recovery Change-Id: I22d7dc4d994069201e5a633cec21421e2c4182fa
2017-10-09Revert "Revert "Move error_code.h into otautil.""Tao Bao2-0/+80
This reverts commit 26436d6d6010d5323349af7e119ff8f34f85c40c to re-land "Move error_code.h into otautil.". This way it stops requiring relative path ".." in LOCAL_C_INCLUDES (uncrypt and edify). Soong doesn't accept non-local ".." in "local_include_dirs". This CL needs to land with device-specific module changes (e.g. adding the dependency on libotautil). Test: lunch aosp_{angler,bullhead,dragon,fugu,sailfish}-userdebug; mmma bootable/recovery Change-Id: If193241801af2dae73eccd31ce57cd2b81c9fd96
2017-10-05Revert "Move error_code.h into otautil."Tao Bao2-80/+0
This reverts commit 623fe7e701d5d0fb17082d1ced14498af1b44e5b. Reason for revert: Need to address device-specific modules. Change-Id: Ib7a4191e7f193dfff49b02d3de76dda856800251
2017-10-04Move error_code.h into otautil.Tao Bao2-0/+80
This way it stops requiring relative path ".." in LOCAL_C_INCLUDES (uncrypt and edify). Soong doesn't accept non-local ".." in "local_include_dirs". Test: mmma bootable/recovery Change-Id: Ia4649789cef2aaeb2785483660e9ea5a8b389c62
2017-10-03otautil: Export headers.Tao Bao7-4/+8
Test: mmma bootable/recovery Change-Id: Ic01b68e2a394d578fc9fc09da2dabe9061b98122
2017-07-27otautil: Clean up dirCreateHierarchy().Tao Bao2-143/+95
- Changed to std::string based implementation (mostly moved from the former make_parents() in updater/install.cpp); - Removed the timestamp parameter, which is only neeed by file-based OTA; - Changed the type of mode from int to mode_t; - Renamed dirCreateHierarchy() to mkdir_recursively(). Test: recovery_unit_test passes. Test: No external user of dirCreateHierarchy() in code search. Change-Id: I71f8c4b29bab625513bbc3af6d0d1ecdc3a2719a
2017-07-25otautil: Delete dirUnlinkHierarchy().Tao Bao2-69/+0
This function has become obsolete since we've removed file-based OTA support (it was needed by 'delete_recursive' edify function earlier). Test: mmma -j bootable/recovery Test: Code search shows no active user of the function. Change-Id: If6faaa759d4c849b79acba4e6adb82baadc89f7a
2017-05-24kill package_extract_dirTianjie Xu3-178/+0
It's only used by file-based OTA which has been deprecated for O. Test: mma Change-Id: I439c93155ca94554d827142c99aa6c0845cc7561
2017-05-10otautil: Android.mk -> Android.bpSteven Moreland2-33/+34
Test: flash and boot recovery on internal angler Change-Id: Id8845b4b422d0078b251333eb6d30ce14771ef10
2017-05-04Update the comment for obsolete symlink handling .Tianjie Xu1-1/+0
Symlink is a filebased OTA feature, and the corresponding updater function has been removed in https://android-review.googlesource.com/#/c/350357/. Also the only place where we call "package_extract_dir()" is to unpack some bootloader dir in vendor's code. We plan to remove it also in a separate bug. Bug: 31917448 Test: mma Change-Id: I3986d60958e64e0d5d8fa5f5bd508c579fb7fa2c
2017-05-02Move sysMapFile and sysReleaseMap into MemMapping class.Tao Bao2-94/+82
Test: recovery_component_test Test: recovery_unit_test Test: Apply an OTA on angler. Change-Id: I7170f03e4ce1fe06184ca1d7bcce0a695f33ac4d
2017-03-31Merge "Log temperature during OTA update" am: bc2c51a97f am: 1d7e500bfcTianjie Xu3-4/+112
am: 556ca4e301 Change-Id: Ib75bdbee801b1caa2ff7b94b174feae1f7d85688 (cherry picked from commit 6ccd0b780fe0953bcea4c538fe2c0a1f2b9f5af2)
2017-03-28Log temperature during OTA updateTianjie Xu3-4/+112
Log the maximum temperature as well as the start/end temperature of an update to last_install. Check the temperature at the end of each block_image_update(verify). To get the maximum temp, we iterate through /sys/class/thermal/thermal_zone*/temp and find the maximum value present. Bug: 32518487 Test: temperature logs in last_install Change-Id: Iaf22a9fbc5b18611bbc5320ffea995417872e514
2016-11-08otautil: Clean up obsolete includes.Tao Bao2-12/+0
external/zlib and external/safe-iop/include were used by Zip.c, which became obsolete after [1]. Removing - <assert.h>: we no longer call assert(3); - <limits.h>: we no longer use PATH_MAX; - <stdio.h>: we don't need FILE anymore; - <stdlib.h>: no more malloc(3)/calloc(3); - <unistd.h>: was once needed for lseek(2); - <string.h>: no more memset(3). Adding - <stdint.h> for SIZE_MAX. [1] commit 8cf5c8f60f51049278b08ae4cbc31df397b651fd: "Replace minzip with libziparchive". Test: `mmma bootable/recovery` Change-Id: I349e909ba83d0f6ade5f92856ce3934f29fdca6c (cherry picked from commit 14b61e7b961bb49787ec9ec8f8f7a95c8d12b71c)
2016-11-08otautil: Clean up obsolete includes.Tao Bao2-12/+1
external/zlib and external/safe-iop/include were used by Zip.c, which became obsolete after [1]. Removing - <assert.h>: we no longer call assert(3); - <limits.h>: we no longer use PATH_MAX; - <stdio.h>: we don't need FILE anymore; - <stdlib.h>: no more malloc(3)/calloc(3); - <unistd.h>: was once needed for lseek(2); - <string.h>: no more memset(3). Adding - <stdint.h> for SIZE_MAX. [1] commit 8cf5c8f60f51049278b08ae4cbc31df397b651fd: "Replace minzip with libziparchive". Test: `mmma bootable/recovery` Change-Id: I349e909ba83d0f6ade5f92856ce3934f29fdca6c
2016-11-08otautil: Clean up SysUtil.cpp.Tao Bao2-195/+203
Add unit testcases for sysMapFile(). Test: recovery_unit_test passes. Test: Build and use the new recovery image to sideload a package. Test: Build and use the new recovery image to install an update. Change-Id: I77d8f1ea151ab513865d992c256ba93a1fcb51a4 (cherry picked from commit c3292f3fcbb3cd608cc19b7459751fa5bb64ab84)
2016-11-07otautil: Clean up SysUtil.cpp.Tao Bao2-189/+197
Add unit testcases for sysMapFile(). Test: recovery_unit_test passes. Test: Build and use the new recovery image to sideload a package. Test: Build and use the new recovery image to install an update. Change-Id: I77d8f1ea151ab513865d992c256ba93a1fcb51a4
2016-10-18Replace minzip with libziparchiveTianjie Xu7-0/+749
Clean up the duplicated codes that handle the zip files in bootable/recovery; and rename the library of the remaining utility functions to libotautil. Test: Update package installed successfully on angler. Bug: 19472796 Change-Id: Iea8962fcf3004473cb0322b6bb3a9ea3ca7f679e