efa62d959cf8f225477ab85d8ff42d5150007cf8 |
|
09-Nov-2017 |
Amin Hassani <ahassani@google.com> |
update_engine: Adds BROTLI_BSDIFF operation Brotli compression creates on average 10%-20% smaller output than bzip2 in addition to having faster decompressor. With recent changes in bsdiff to compress the its patch with brotli, we can use it in the update_engine as a new operation BROTLI_BSDIFF. This operation will be turned on in minor version 4. However, this CL only adds support for it in the client. It will not generate BROTLI_BSDIFF operations yet. BUG=chromium:783437 TEST=unittests pass for both update_engine and update_payload; 'brillo_update_payload {generate|verify}' passes; 'scripts/paycheck.py payload.delta' passes; Change-Id: Ie791ba5431561c95de6fbc031a8196dbfd912288 Reviewed-on: https://chromium-review.googlesource.com/764791 Commit-Ready: Amin Hassani <ahassani@chromium.org> Tested-by: Amin Hassani <ahassani@chromium.org> Reviewed-by: Ben Chan <benchan@chromium.org>
/system/update_engine/payload_generator/ab_generator.h
|
726aeca1c665910593761a1990ee50f22d98f53f |
|
06-Apr-2016 |
Alex Deymo <deymo@google.com> |
delta_generator: Use REPLACE_XZ in deltas when allowed. This patch moves the generation of the best allowed full operation to a new function which now includes ZERO, REPLACE, REPLACE_BZ and REPLACE_XZ when allowed. This function is used to produce a full operation whenever it is needed in the "full" payload generator and the AB "delta" payload generator. Bug: 24578399 TEST=brillo_update_payload generated REPLACE_XZ operations for a delta payload that was using REPLACE_BZ operations and merged them. TEST=brillo_update_payload generated a full payload with REPLACE, REPLACE_BZ and REPLACE_XZ operations. TEST=Updated unittests. Change-Id: I29618094a84ef8050f8dd7ede0fd70056dc9d650
/system/update_engine/payload_generator/ab_generator.h
|
39910dcd1d68987ccee7c3031dc269233a8490bb |
|
10-Nov-2015 |
Alex Deymo <deymo@google.com> |
Split payload application code into a subdirectory. This patch splits from the main libupdate_engine code the part that is strictly used to download and apply a payload into a new static library, moving the code to subdirectories. The new library is divided in two subdirectories: common/ and payload_consumer/, and should not depend on other update_engine files outside those two subdirectories. The main difference between those two is that the common/ tools are more generic and not tied to the payload consumer process, but otherwise they are both compiled together. There are still dependencies from the new libpayload_consumer library into the main directory files and DBus generated files. Those will be addressed in follow up CLs. Bug: 25197634 Test: FEATURES=test emerge-link update_engine; `mm` on Brillo. Change-Id: Id8d0204ea573627e6e26ca9ea17b9592ca95bc23
/system/update_engine/payload_generator/ab_generator.h
|
82352f97b4621dbf6af8308ff0b0b17b0968b53a |
|
10-Nov-2015 |
Sen Jiang <senj@google.com> |
delta_generator: Include per-operation source hash. This adds a src_sha256_hash field in the operation if minor version is 3. Bug: 23182225 TEST=cros_workon_make update_engine --test TEST=Generated a minor version 3 payload, the manifest is about 50% larger. Change-Id: I0e363fca4de24bae64ac83930afdd42a6ddc21c9
/system/update_engine/payload_generator/ab_generator.h
|
3f39d5cc753905874d8d93bef94f857b8808f19e |
|
13-Oct-2015 |
Alex Vakulenko <avakulenko@google.com> |
update_engine: Rename "chromeos" -> "brillo" in include paths and namespaces libchromeos is transitioning to libbrillo and chromeos namespaces and include directory is changing to brillo. Bug: 24872993 Change-Id: I770659a95be380a50fe3b2ba9f91d65818f40945
/system/update_engine/payload_generator/ab_generator.h
|
ebdf17d4202c67933764135bfc1cece629829201 |
|
19-Aug-2015 |
Sen Jiang <senj@google.com> |
Generate update operations per partition In order to support multiple partitions, OperationsGenerator should take one partition at a time, and be called multiple times. This also reduce code repetition. TEST=FEATURES=test emerge-peppy update_engine; cros_generate_update_payload generate same payload as before. BUG: 23037923 Change-Id: Iefbe87401217873e6dbdc616791667cfd1ec76a3
/system/update_engine/payload_generator/ab_generator.h
|
aea4c1cea20dda7ae7e85fc8924a2d784f70d806 |
|
20-Aug-2015 |
Alex Deymo <deymo@google.com> |
Re-license update_engine to Apache2 This patch automatically replaced the license on all text files from Chromium OS (BSD style) to AOSP (Apache2), keeping the original year as a reference. The license header was added to .gyp and .gypi files, the NOTICE was replaced with a copy of the Apache2 license and MODULE_LICENSE_* file was updated. BUG=b/23084294 TEST=grep 'Chromium OS Authors' doesn't find anything. Change-Id: Ie5083750755f5180a8a785b24fe67dbf9195cd10
/system/update_engine/payload_generator/ab_generator.h
|
8cc502dacbccdab96824d42287f230ce04004784 |
|
10-Aug-2015 |
Sen Jiang <senj@chromium.org> |
update_engine: Change OperationsGenerator to use BlobFileWriter BUG=chromium:517280 TEST=Unit test for BlobFileWriter Change-Id: Ib49925676331acee97ff6b4cec38a81ca8b157a1 Reviewed-on: https://chromium-review.googlesource.com/291441 Tested-by: Sen Jiang <senj@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Sen Jiang <senj@chromium.org>
/system/update_engine/payload_generator/ab_generator.h
|
2d3b2d635e50c6886e285afb86c3187d9e0bd360 |
|
18-Jul-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Implement soft/hard chunk size limits. The current approach uses a single chunk_size value, that defaults to -1 (or "whole files") for delta payloads. The "whole files" default is the preferred value since BSDIFF and SOURCE_BSDIFF operations (the most common operations in real delta payloads) will benefit from having access to the whole file in the old and new partition, in particular in cases like the chrome binary (~120 MiB in size). On the other hand, very big chunks have a big memory footprint in most cases. Current implementations of BSDIFF, REPLACE_BZ and REPLACE will require as much private memory as the destination chunk_size or more. Because of this and due to the lack of old data, a small chunk_size (1 MiB) is used for full payloads. To break this tension between having a big chunk_size for operations that will benefit from it versus having a small chunk_size for cases where it doesn't change anything, this patch introduces two chunk size values: a hard and soft limit. The hard_chunk_size has the same meaning as the old chunk_size: no operation should have a destination bigger than the provided hard limit. The soft_chunk_size is the preferred chunk size for an operation when a bigger chunk will not benefit significantly the final payload size. Having a small chunk size for operations like REPLACE_BZ, REPLACE, SOURCE_COPY and MOVE is important to keep the memory footprint low when it the extra memory is not required. The new soft_chunk_size limit is used when merging operations (previously hard-coded to 1 MiB) and when generating new operations for zeroed and moved blocks. BUG=chromium:485397 TEST=Run cros_generate_update_payload for full and delta payloads. Inspected the chunk size in the resulting payloads. Change-Id: I370048a81913ad23a151cfef6690627b7fff7277 Reviewed-on: https://chromium-review.googlesource.com/286568 Reviewed-by: Gilad Arnold <garnold@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org> Trybot-Ready: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/ab_generator.h
|
14158570d3995008dc93a628004118b87a6bca01 |
|
13-Jun-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Split delta_diff_generator file. The DeltaDiffGenerator class includes both an OperationsGenerator using the A-to-B operations and a set of common methods used also by the inplace generator. The delta_diff_generator.{h,cc} files also include a single function to generate the payload (GenerateUpdatePayloadFile) that centralizes the logic of generating the operations and writing the payload. This patch splits these three parts in different files. The common delta diff function are moved to the delta_diff_utils.{h,cc} files. The operations generator class that uses A-to-B operations is now in a new ab_generator.{h,cc} pair of files that implement the ABGenerator() class. Finally, the payload file writing methods are now in a single PayloadFile class. This allow us to create payload files without the need to generate images and their deltas. This will be used in a follow up CL to remove the image generation logic from the unittests. BUG=chromium:351589 TEST=Ran unittests. Regenerate a payload with and without this patch; got the same results. Change-Id: I6816d2c805ba8c0c5c9423c720131a100a15ebaa Reviewed-on: https://chromium-review.googlesource.com/280838 Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org> Trybot-Ready: Alex Deymo <deymo@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/ab_generator.h
|