Commit graph

5404 commits

Author SHA1 Message Date
Tao Bao
345f350540 Merge "minadbd: Remove two warning options."
am: 7bd61f0cc0

Change-Id: Id5e986ecd00cb2b953d761957a987a1b0c5ebf20
2017-11-15 23:04:09 +00:00
Tao Bao
7bd61f0cc0 Merge "minadbd: Remove two warning options." 2017-11-15 22:59:40 +00:00
Tao Bao
f87d20404d minadbd: Remove two warning options.
'-Wimplicit-function-declaration' is not needed (it's for C89) and
already enabled by -Wall.

For '-Wno-missing-field-initializers', don't see any existing case that
requires the flag.

Test: `mmma -j bootable/recovery` on aosp_{bullhead,marlin}-userdebug.
Change-Id: I46604723087ed9a7747f6cae31a95fc0074c6758
2017-11-15 11:34:26 -08:00
Jaegeuk Kim
c418bfeae2 Merge "recovery: format f2fs with encrypt/quota"
am: d4b6e25fdd

Change-Id: I1d17a488d2eea4d858fa31e7a00d694e20b011b3
2017-11-14 02:45:25 +00:00
Treehugger Robot
d4b6e25fdd Merge "recovery: format f2fs with encrypt/quota" 2017-11-14 01:49:26 +00:00
Jaegeuk Kim
1a8bb0f542 recovery: format f2fs with encrypt/quota
Change-Id: Ia393b7b78b45f09964449ec0e255aa26bb3b8ddf
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
2017-11-13 14:05:00 -08:00
Tao Bao
e2296b7a25 Merge "applypatch: Change the patch parameter to const Value& in Apply{BSDiff,Image}Patch."
am: de07371b03

Change-Id: I2261486420f8e55cfbdd61f130be24f6e4deebf4
2017-11-11 01:18:04 +00:00
Tao Bao
de07371b03 Merge "applypatch: Change the patch parameter to const Value& in Apply{BSDiff,Image}Patch." 2017-11-11 01:09:47 +00:00
Tao Bao
1e0941f4f6 applypatch: Change the patch parameter to const Value& in Apply{BSDiff,Image}Patch.
It used to be "const Value*", but nullptr won't be a valid input.

Test: recovery_host_test; recovery_component_test
Change-Id: I904b5689ac3e64504088bf0544c9fb5d45a52243
2017-11-10 12:18:34 -08:00
Alex Deymo
e73bca40dc Merge "Include bspatch.h from bsdiff/"
am: 29cd3215ec

Change-Id: Ib53e96bee59300c4f94bf5de1801d4482a5abe3c
2017-11-10 09:57:04 +00:00
Alex Deymo
29cd3215ec Merge "Include bspatch.h from bsdiff/" 2017-11-10 09:54:11 +00:00
Tao Bao
e6250057b8 Merge "uncrypt: Move to Soong."
am: 992bccfef4

Change-Id: If87cf6f7e32eb8089ec72207222eb5ec0b22adac
2017-11-09 23:29:04 +00:00
Tao Bao
992bccfef4 Merge "uncrypt: Move to Soong." 2017-11-09 23:09:33 +00:00
Tao Bao
1d8cb3659a Merge "Load-balancing update_verifier worker threads."
am: f1e70b93f1

Change-Id: Ia1224ef69a80ebd247943c2f010bc7cee00e3f69
2017-11-09 20:35:38 +00:00
Tao Bao
a2a68a522e uncrypt: Move to Soong.
Test: mmma -j bootable/recovery
Change-Id: I405f2a70f51904c02c49a287c23cbc115a4c5132
2017-11-09 12:34:00 -08:00
Treehugger Robot
f1e70b93f1 Merge "Load-balancing update_verifier worker threads." 2017-11-09 20:14:08 +00:00
Tao Bao
160514bf2b Load-balancing update_verifier worker threads.
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-08 23:04:28 -08:00
Alex Deymo
3afe5f5691 Include bspatch.h from bsdiff/
The function ApplyBSDiffPatch() defined in bspatch.cpp is declared in
applypatch.h, but it includes "bspatch.h" from the bsdiff/ project,
which is at least confusing. There is no "bspatch.h" in this repo, so
the include actually reffers to the one in bsdiff. This patch uses the
"bsdiff/bspatch.h" form instead to avoid confusion.

Bug: None
Test: It builds.

Change-Id: I6b6ffd6725b2b34ff644aed93683f69779103661
2017-11-08 12:29:58 +01:00
Tao Bao
236a7261cb Merge "otautil: Remove the aborts in RangeSet::Parse()."
am: 16b8b8fd1c

Change-Id: Ib3b934d2ef5db25786016896868e021d7e087d4d
2017-11-08 02:07:46 +00:00
Tao Bao
16b8b8fd1c Merge "otautil: Remove the aborts in RangeSet::Parse()." 2017-11-08 01:51:17 +00:00
Tao Bao
6798315327 otautil: Remove the aborts in RangeSet::Parse().
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-11-07 12:50:02 -08:00
Tianjie Xu
c1ab2bb535 Merge "Switch to bionic gtest in bootable/recovery"
am: bf41f2aa23

Change-Id: I90238f94c3f3eeafe3f24d417f7f6c66ac3cf5fd
2017-11-06 19:02:01 +00:00
Tianjie Xu
bf41f2aa23 Merge "Switch to bionic gtest in bootable/recovery" 2017-11-06 18:56:27 +00:00
Tao Bao
6d61e2123b Merge "Clean up fuse_sideload and add a testcase."
am: 73dca3e983

Change-Id: I1d895338f32c5814c22f7134aee579c2a252e8bb
2017-11-04 14:31:55 +00:00
Tao Bao
73dca3e983 Merge "Clean up fuse_sideload and add a testcase." 2017-11-04 14:27:48 +00:00
Tao Bao
91a7aa4577 Clean up fuse_sideload and add a testcase.
This CL mainly changes:
a) moving the interface in struct provider_vtab to std::function;
b) code cleanup, such as moving the declaration closer to the uses,
   using explicit type conversion.

Test: recovery_component_test
Test: minadbd_test
Test: Sideload a package on marlin.
Change-Id: Id0e3c70f1ada54a4cd985b54c84438c23ed4687e
2017-11-03 18:30:41 -07:00
Jin Qian
59b20d6565 Merge "recovery: remove make_ext4fs from updater"
am: 3f06512714

Change-Id: Iaccf79dfa4fc7b85071567cd0d58d294478ea0f3
2017-11-03 23:22:23 +00:00
Treehugger Robot
3f06512714 Merge "recovery: remove make_ext4fs from updater" 2017-11-03 23:18:25 +00:00
Jin Qian
4d079261e5 Merge "recovery: fix library dependency"
am: 0da645fefa

Change-Id: If42448e311abde44b730f31e8ec779e4fe660ca3
2017-11-03 22:29:20 +00:00
Treehugger Robot
0da645fefa Merge "recovery: fix library dependency" 2017-11-03 22:16:55 +00:00
Tianjie Xu
a88cc5440e Switch to bionic gtest in bootable/recovery
We encountered segfaults in Imgdiff host tests due to the failure to
reset states of getopt. The problem can be solved by switching to use
bionic's gtest where a new process is forked for each test.

Also modify the recovery_component_test to make sure it runs in parallel.
Changes include:
  1. Merge the writes to misc partition into one single test.
  2. Change the hard coded location "/cache/saved.file" into a configurable
  variable.

Bug: 67849209
Test: recovery tests pass

Change-Id: I165d313f32b83393fb7922c5078636ac40b50bc2
2017-11-03 14:09:11 -07:00
Jin Qian
502fd1c5e8 recovery: remove make_ext4fs from updater
Bug: 64395169
Change-Id: I6f6a4f82b225435c6ad5c828e110fa135e6f7579
2017-11-03 13:54:59 -07:00
Jin Qian
000148dbc9 recovery: fix library dependency
After removing some deadcode from libext4_utils, libz is optimized
out by linker. However, it's still required by libvintf. Moving libz
down the list fixed the build.

Bug: 64395169
Change-Id: I23ecd70c83af83a219faced59d8227dc3c4e43d5
2017-11-03 13:43:48 -07:00
Tao Bao
fc8066feed Merge "tests: Clean up the files in TemporaryDir."
am: 2cf44d08cf

Change-Id: I37a43d8454caebc18e2916afffbe8b894cd5374e
2017-11-03 18:57:36 +00:00
Treehugger Robot
2cf44d08cf Merge "tests: Clean up the files in TemporaryDir." 2017-11-03 18:51:34 +00:00
Tao Bao
f3e2017309 Merge "Add a repohook to clang-format changes."
am: 439263cb83

Change-Id: I954d3514875799af055eedd6fe5b536827f2ef12
2017-11-03 03:31:14 +00:00
Tao Bao
439263cb83 Merge "Add a repohook to clang-format changes." 2017-11-03 03:27:15 +00:00
Tao Bao
6b1aae376a Add a repohook to clang-format changes.
It would clang-format according to the local style file in
.clang-format, unless explicitly skipped with --no-verify.

An example output is as follows:

[COMMIT dda6b1ee4247] test
[FAILED] clang_format
    The following files have formatting errors:
        screen_ui.cpp
    You can run `/mnt/aosp/aosp-master/tools/repohooks/tools/clang-format.py --fix --clang-format /mnt/aosp/aosp-master/prebuilts/clang/host/linux-x86/clang-stable/bin/clang-format --git-clang-format /mnt/aosp/aosp-master/prebuilts/clang/host/linux-x86/clang-stable/bin/git-clang-format --style file --commit dda6b1ee424710760bbab4421e95239fa6a2b40d` to fix this
[COMMIT be69a2c4ba16] Add a repohook to clang-format the change.
[RUNNING 2/2] clang_format
An automatic fix can be attempted for the "clang_format" hook. Do you want to run it? (Yes/no)?
Fix successfully applied. Amend the current commit before attempting to upload again.

More details about repohooks can be found at:

  https://android.googlesource.com/platform/tools/repohooks/

Test: `repo upload` a CL.
Change-Id: Ie8203a317eb3be7acd5592e03374873997647aa0
2017-11-02 16:23:58 -07:00
Xin Li
04a8b2b532 Merge commit '04bcf3ee761d8648d0247dd8322e3542c0319464' from
oc-mr1-dev-plus-aosp into stage-aosp-master

Change-Id: Ie321cc4ce4a2324ca7bf0f3493f23ea7999765b8
2017-11-02 15:49:26 -07:00
Tianjie Xu
57e16e4f77 Merge "Add libbrotli as a dependency for libbsdiff"
am: 43f194c8bc

Change-Id: Ia4dbce188995448384a94be87a3020f5ca033365
2017-11-02 17:54:37 +00:00
Tianjie Xu
43f194c8bc Merge "Add libbrotli as a dependency for libbsdiff" 2017-11-02 17:50:40 +00:00
Tao Bao
54c1db4b3e tests: Clean up the files in TemporaryDir.
~TemporaryDir() calls rmdir(2) directly, which works with empty
directories only.

Test: Run recovery_host_test; No leftover on host.
Test; Run recovery_component_test on marlin; No leftover on device.
Change-Id: Ib510efb16eeda61b34161e2b386499e6cb79a4ca
2017-11-01 22:34:51 -07:00
Tianjie Xu
8c28081039 Add libbrotli as a dependency for libbsdiff
Bug: 34220646
Test: mma
Change-Id: If00285943fff8226f1bc7239db5570a277739904
2017-11-01 15:30:05 -07:00
Tianjie Xu
ff7c186f66 Merge "Fix the size mismatch in imgdiff"
am: dec77a454e

Change-Id: Ibd75a70220a20d38eb561c4ed84ac42225f1add9
2017-11-01 19:04:43 +00:00
Tianjie Xu
dec77a454e Merge "Fix the size mismatch in imgdiff" 2017-11-01 18:56:46 +00:00
Tianjie Xu
113fe05ee0 Fix the size mismatch in imgdiff
As we construct the deflate entries of the target zip file with
random data, the total size of the zip file may vary from case
to case. This leads to occasional failures in the split test for
deflate large apk files. This CL fixes the issue by adding two static
zip files in the testdata instead of generating them dynamically.

Bug: 67849209
Test: run the deflate_large_test repeatedly
Change-Id: Iaeffad9205adefa10c9f62f9f088c33c4360a650
2017-10-31 23:31:02 -07:00
Tao Bao
78fa902920 Merge "update_verifier: Fix the wrong computation with group_range_count."
am: 011af6e1a9

Change-Id: Id9829bc924741a57fc4e175677f235d2221482f2
2017-10-30 17:47:14 +00:00
Treehugger Robot
011af6e1a9 Merge "update_verifier: Fix the wrong computation with group_range_count." 2017-10-30 17:29:35 +00:00
Tao Bao
6ec94c023e update_verifier: Fix the wrong computation with group_range_count.
'group_range_count' doesn't properly consider the pair-wise range
structure. It may split the ranges into wrong pairs if it evaluates to
an odd number.

For example, for an input range string of "6,0,2,10,12,20,22" with 4
threads, group_range_count becomes 1. It would then try to verify (0,2),
(2,10), (10,12) and (12,20). Note that (2,10) and (12,20) are not valid
ranges to be verified, and with (20,22) uncovered.

Bug: 68343761
Test: Trigger update_verifier verification. Check the number of verified
      blocks against the one in care_map.txt.
Change-Id: I7c5769325d9866be06c45e7dbcc0c8ea266de714
2017-10-29 14:51:25 -07:00
Tao Bao
450918158d Merge "tests: Take the ownership of the FD when calling fdopen."
am: 166479b259

Change-Id: I1d92a0da6048893c034d1d419b1729abc1968511
2017-10-27 00:11:08 +00:00