05871fab8b32938ad66ce230250ff6db5563bd7a |
|
01-Jun-2016 |
Alex Deymo <deymo@google.com> |
Allow to shrink ext2 filesystems. There was a function a long time ago that didn't handle shrinking an ext2 filesystem when computing the diff of the blocks that were not part of a file nor metadata (mostly empty space blocks). This is now handled in a different way, which is not related to how the filesystems are parsed in the ABGenerator. This patch removes the check that prevents the delta generator from generating those payloads and fixes the inplace generator for partitions that shrink in size. Bug: 28846535 TEST=Generated a payload to a smaller ext2 system image, both for minor version 1 and 2+. Change-Id: Ide408c48b0032dbe478c8e348c40e1a0b5665ea8
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
80f70ff45f8ea9a679c0c3ed0dc143dd2fe2b63e |
|
11-Feb-2016 |
Alex Deymo <deymo@google.com> |
Build unittests in Brillo. Many unittests do not pass for simple reasons that will be addressed later. This CL includes all the changes to make the unittests build. In particular, the generated DBus mocks, required to build several unittests are now included here. The dbus-constants.h files were moved to the system_api repo, so they can be removed from here. The unittest build is only enabled for Brillo targets, since non-Brillo targets don't even build DBus. Bug: 26955860 TEST=`mmma` on edison-eng (and aosp_arm-eng). Change-Id: Ib38241f0a6eb99b1d60d72db6bcfd125d38e3fad
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
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/inplace_generator_unittest.cc
|
625406cee9a90ac2ed895f480286b7f0e8497f38 |
|
17-Sep-2015 |
Sen Jiang <senj@google.com> |
payload_generator: Remove PartitionName enum. payload_generator should be able to generate payload for any partition name in major version 2, so we should use a string for partition name. Bug: 23620828 TEST=cros_workon_make update_engine --test Change-Id: Iee92af5d82e74b9be6ae793850a4ae6c31e008c5
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
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/inplace_generator_unittest.cc
|
a12ee11c78ac6d7c2605921a4006b6a7416e0c35 |
|
13-Aug-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Move InstallOperation to the top level. The InstallOperation message in the protobuf is a nested message inside the DeltaArchiveManifest message, making all references to operation types be very long names like DeltaArchiveManifest_InstallOperation_Type_REPLACE_BZ while most other messages are not nested in the DeltaArchiveManifest message. To improve readability and to prepare for future update metadata changes, this patch moves the InstallOperation message to the top level and replaces all references to operation types with the new shorter version like InstallOperation::REPLACE_BZ. This change only impacts the scope of the generated classes and the serialized format of the protobuf. This exact same question was addressed by protobuf maintainers here: https://groups.google.com/forum/#!topic/protobuf/azWAPa6hP4A Finally coding style and indentation was automatically updated due to the shorter names. BUG=b:23179128 TEST=Unittest still pass. Change-Id: I55add54265934cd1fd3e9cb786c5d3f784902d17 Reviewed-on: https://chromium-review.googlesource.com/293504 Trybot-Ready: Alex Deymo <deymo@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org> Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
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/inplace_generator_unittest.cc
|
896fdbaa1cc9a422ac36ef455d02c3cef1f27816 |
|
17-Jul-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Prevent the InplaceGenerator to add MOVEs to block 0. While we normally don't generate MOVE operations to/from the block 0, the cycle breaker logic can use the block 0 as scratch space, creating MOVE operations to and from the block 0. This patch prevents it from picking the block 0 as scratch space and logs a message when that would happend. BUG=chromium:480751,chromium:500423 TEST=Added unittest. Change-Id: I91f1b3c426a9d06aae5b685e2e901c7e448d8677 Reviewed-on: https://chromium-review.googlesource.com/286623 Reviewed-by: Gilad Arnold <garnold@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
3b2c7d0e6d859e6fc75c82b3417f87cf5968a49d |
|
17-Jul-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Sort full operations by destination. The inplace generator moves all the full operations to the end of the list. This patch sorts those operations by the destination. This patch also cleans up the Vertex class by using the new AnnotatedOperation class instead of the operation and file_name separated. BUG=None TEST=Unittest still pass. minor_version=1 full operations appear in order according to "cros payload". Change-Id: Ia0c15939086cec52dc855cbc3afa913f8cbebf6b Reviewed-on: https://chromium-review.googlesource.com/286213 Tested-by: Alex Deymo <deymo@chromium.org> Reviewed-by: Gilad Arnold <garnold@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
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/inplace_generator_unittest.cc
|
1beda780333ce51d7872603b70712772eb2383fb |
|
07-Jun-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Remove unused IsIdempotentOperation(). All the minor-version=2 are idempotent, so since we switched to minor version 2, this function becomes trivial now. This patch removes this function from the code and moves the ExtentRanges class to the payload_generator/ directory since now it is only used there. BUG=None TEST=Unittest still pass. Change-Id: Ib9dbbdded0ca2ef2128bb6c470de7a00720c4038 Reviewed-on: https://chromium-review.googlesource.com/275806 Reviewed-by: Alex Deymo <deymo@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
6b9e38ef1180efe55e4a82bb18536d1b53fe493d |
|
05-Jun-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Use the FilesystemInterface to generate deltas. This patch removes the FilesystemIterator used to iterate the file data blocks, the metadata.{cc,h} files used to iterate the metadata blocks and the ReadUnwrittenBlocks() method used to process the rest of the blocks. Instead, these three cases are handled by the same DeltaReadFilesystem() method using the FilesystemInterface abstraction for ext2. The sub-file block handling was changed from (filename, offset, size) to just the list of blocks (or Extents) and the parsing of the filesystem was removed from the methods that produce operations. The filename is kept just as a label for logging purposes. This patch implies that the filesystem doesn't need to be mounted in order to generate the payload, as all the data is accessed as blocks in a partition. The mountpoint was removed from all the operations generators, but it is still required to mount the old filesystem to detect the minor version supported by the old update_engine. Also, since the list of blocks is never accessed using the FIGETBSZ ioctl, no payload_generator/ test require root privileges, nor the delta_generator binary. BUG=chromium:305832,chromium:331965 TEST=Updated unittest to use extents. Change-Id: Ia2ea9433190258f70e3bce09f896b18326a7abf9 Reviewed-on: https://chromium-review.googlesource.com/275804 Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
5c6c65570013bbdbd67f9bf6391dd295ef5b5ee6 |
|
03-Jun-2015 |
Alex Deymo <deymo@chromium.org> |
update_engine: Split Extent utils from graph_utils. "Graph" related utils should only concern parts of the code using the inplace generator, since other generators don't use a dependency graph. This patch splits the Extent related utils from the graph related ones creating a new extent_utils.h file. BUG=None TEST=unittest still pass. Change-Id: I0941698b0a47a6cc222e8dc062fc54eb3cdf4de2 Reviewed-on: https://chromium-review.googlesource.com/274899 Reviewed-by: Gilad Arnold <garnold@chromium.org> Commit-Queue: Alex Deymo <deymo@chromium.org> Tested-by: Alex Deymo <deymo@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
568734533c25a5783ea004aeb0da38244dcd3e5b |
|
28-Mar-2015 |
Allie Wood <alliewood@chromium.org> |
update_engine: Remove sparse hole extents. Whenever there is an extent beginning with a sparse hole, that extent will be filtered out. Extents are now read in from the partition rather than the file itself in ReadFileToDiff. src/dst_length are set to the number of blocks in src/dst_extents * block_size. This was tested manually with _GenerateSinglePayload to generate a delta payload between test images. BUG=chromium:469792,chromium:474497 TEST=`FEATURES=test emerge-link update_engine` and manual testing. Change-Id: I384ec3f16f7fd9087159817358308f22d29e9edf Reviewed-on: https://chromium-review.googlesource.com/264442 Reviewed-by: Don Garrett <dgarrett@chromium.org> Trybot-Ready: Alex Deymo <deymo@chromium.org> Commit-Queue: Allie Wood <alliewood@chromium.org> Tested-by: Allie Wood <alliewood@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
703022b71fc6a89796f2f97448b1a419007a52ca |
|
07-Apr-2015 |
Shawn N <shawnn@chromium.org> |
Revert "update_engine: Remove sparse hole extents." Speculatively reverting commit 96b659d794be39762e8e7fd9f72fe6f723e21ec8 due to crbug.com/474497. Change-Id: I17fd91c8568b30eafea9e70c9f2255ac2dc459a6 Reviewed-on: https://chromium-review.googlesource.com/264306 Reviewed-by: Shawn N <shawnn@chromium.org> Commit-Queue: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
8e2c4ef89b1c2c8779d003b40c70c75db1839bfb |
|
28-Mar-2015 |
Allie Wood <alliewood@chromium.org> |
update_engine: Remove sparse hole extents. Whenever there is an extent beginning with a sparse hole, that extent will be filtered out. Extents are now read in from the partition rather than the file itself in ReadFileToDiff. BUG=chromium:469792 TEST=`FEATURES=test emerge-link update_engine` Change-Id: I615df120f6e46f66d500128561e0ddfcd407c13a Reviewed-on: https://chromium-review.googlesource.com/262965 Reviewed-by: Allie Wood <alliewood@chromium.org> Commit-Queue: Allie Wood <alliewood@chromium.org> Tested-by: Allie Wood <alliewood@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|
cd514b531a38da1497630fa68b6e3ef45871893d |
|
19-Feb-2015 |
Allie Wood <alliewood@chromium.org> |
update_engine: Refactor inplace payload generator algorithm code. Create a class, InplaceGenerator, that contains all functionality related to the inplace delta generation method (minor version 1). BUG=chromium:459701 TEST=`FEATURES=test emerge-link update_engine` Change-Id: Ib742f70030d6c2fcb1cc3138e0f4aef54eca6975 Reviewed-on: https://chromium-review.googlesource.com/251621 Reviewed-by: Alex Deymo <deymo@chromium.org> Commit-Queue: Allie Wood <alliewood@chromium.org> Tested-by: Allie Wood <alliewood@chromium.org>
/system/update_engine/payload_generator/inplace_generator_unittest.cc
|