Age | Commit message (Collapse) | Author |
|
Its time to make the boundary between Chrome OS and Android code more
clear. This CL moves all CrOS only code to "chromeos" directory and the
same for Android (in "android" directory). This way we would easily know
which code is uses in which project and can keep the code cleaner and
more maintainable.
One big remaining problem is download_action* files. It seems like
DownloadAction class does a lot of things that chrome OS needs and it
depends on a lot of Chrome OS stuff, but Android is also using thie
Action in a way that circumvent the Chrome OS stuff. For example Android
checks for SystemState to be nullptr to not do things. This is really
fragile and needs to change. Probably Android Team has to implement
their own DownloadAction of some sort and not re use the Chrome OS one
in a very fragile way.
Removed a few android files that have not been used anywhere.
Changed some clang-format and lint issues in order to pass preupload.
BUG=b:171829801
TEST=cros_workon_make --board reef --test update_engine
Change-Id: I3fff1d4a100a065a5c1484a845241b5521614d9f
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2508965
Tested-by: Amin Hassani <ahassani@chromium.org>
Auto-Submit: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Tianjie Xu <xunchang@google.com>
Reviewed-by: Kelvin Zhang <zhangkelvin@google.com>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
|
|
Some of the unit tests have been leaking temp files because they don't
properly unlink them. In this CL, we did some rearrangement of the
ScopedTempFile class and moved it into the utils.h (instead of testing
only location) so it can be used everywhere and more efficiently. Also
added functionality to open an file descriptor too so users don't have
to keep a different object for the file descriptor.
BUG=b:162766400
TEST=cros_workon_make --board reef --test; Then looked at the
/build/reef/tmp directory and no files were leaked.
Change-Id: Id64a2923d30f27628120497fdefe16bf65fa3fb0
Reviewed-on: https://chromium-review.googlesource.com/c/aosp/platform/system/update_engine/+/2500772
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Commit-Queue: Amin Hassani <ahassani@chromium.org>
|
|
On a device with Virtual A/B, when sideloading and there's
not enough space in super partition to hold CoW, update_engine
falls back to overwriting all source partitions. In that case,
the allocatable space should be the whole super partition, not
a half of it.
Also update doc comments.
Test: unit test. RecoveryErrorShouldDeleteSource fails without the patch
but succeeds with the patch.
Bug: 163613538
Change-Id: I6bd6895a7eabeb4e8436e57b0ac6830c11d1e98f
|
|
For partial updates, the metadata for untouched dynamic partitions
are just copied over to the target slot. So, verifying the extents
of these partitions in the target metadata should be sufficient for
correctness. This saves the work to read & hash the bytes on these
partitions for each resumed update.
Bug: 151088567
Test: unit tests pass, apply a partial update
Change-Id: I9d40ed2643e145a1546ea17b146fcdcfb91f213f
|
|
Test: run it
Fixes: 153555889
Change-Id: I8f938987721c09ec263a82f223e4920365d203fc
|
|
Erase AVB footer of system other partition prior to any updates so that if
an update overwrites it partially, and the device rolled back (or even
before we finish writing the partition), and the device factory resets,
mapping system_other as /postinstall won't trigger verity errors and
reboots the device.
Bug: 152444348
Test: apply update, rollback, then FDR
Test: apply update, then set sys.cppreopt=requested; observe that
/postinstall cannot be mounted.
Change-Id: I62e5bb8f4c31d9a1beff485c47fc4b07a3a5686b
|
|
When ResetStatus() is called, delete snapshots to free up space on
VAB devices.
On regular A/B, there is no need to cancel the update completely so that
the update may be resumed next time. However, on VAB devices, a
cancelled update should not occupy previously allocated space.
Test: manually call update_engine_client --cancel when an update is in progress, then
call update_engine_client --reset_status, then
call snapshotctl dump to check that snapshots are deleted.
Then, re-apply the update.
Test: manually kill update_engine when an update is in progress, then
call update_engine_client --reset_status, then
call snapshotctl dump to check that snapshots are deleted.
Then, re-apply the update.
Test: manually apply an update until UPDATED_NEED_REBOOT, then
call update_engine_client --reset_status, then
call snapshotctl dump to check that snapshots are deleted.
Then, re-apply the update.
Test: manually apply an update until UPDATED_NEED_REBOOT, then
kill update_engine, then
call update_engine_client --reset_status, then
call snapshotctl dump to check that snapshots are deleted.
Then, re-apply the update.
Bug: 147696014
Change-Id: Ic7049772091a34e0e666fd7ae361ef474d5a28aa
Merged-In: Ic7049772091a34e0e666fd7ae361ef474d5a28aa
|
|
For SOURCE_COPY operations like
563412 -> 123456
OptimizeOperation optimizes it to
5612 -> 1256
and skip writing blocks that does not need to be written for snapshot
partitions.
Bug: 148623880
Test: update_engine_unittests
Test: apply incremental OTA
Change-Id: Ifd2c3851f703f272a74c8f0e9a1c9a82dbcce3e3
|
|
Add out parameter required_size to PreparePartitionsForUpdate
to indicate the total size required on /userdata in order
to apply the update.
Bug: 138808058
Test: update_engine_unittests
Change-Id: I2768d13671e212fd24a1a22811b50c9738834459
|
|
On Virtual A/B devices, don't skip SOURCE_COPY on
static partitions.
Test: update_engine_unittest
Test: incremental update to self
Change-Id: I5c93b501e09f50f559151eb77d83052373c90d0d
|
|
When Virtual A/B devices are updated, SOURCE_COPY operations that are
copying data from source to destination at the same locations:
- are useless;
- introduce an overhead for overwritingin identical data;
- increase the COW device size when using dm-snapshot.
This patch analyzes SOURCE_COPY operations and skips them if applied to
Virtual A/B devices and source and destination addresses are identical.
Bug: 141207436
Test: DynamicPartitionControlAndroidTest:ShouldSkipOperationTest
Depends-On: I146aeba1c8ede35f21cfef8e21d4af62274bda84
Change-Id: Ifec33abaf81b1d4cbd61533293735de68578c9c4
Signed-off-by: Alessio Balsini <balsini@google.com>
|
|
All dynamic/static partitions stuff are moved to
DynamicPartitionControlAndroid.
After this patch:
(1) BootControl remains a simple shim over the boot control HAL.
(BootControl still have two calls that is a delegate
to DynamicPartitionControl, which will be cleaned up
in follow up CLs.)
(2) DynamicPartitionControlInterface API is minimized. All
libdm and other Android specific details are hidden from the
API surface now.
Also move tests from boot_control_unittest to
dynamic_partition_control_unittest because functionalities are moved.
Test: update_engine_unittests
Change-Id: I6ed902197569f9f0ef40e02703634e9078a4b060
|
|
Do not create snapshot when applying downgrade
to non-Virtual-A/B packages and secondary OTAs.
Test: apply downgrade OTA on Virtual A/B devices
Bug: 138733621 (secondary OTA)
Fixes: 138258570 (downgrades)
Change-Id: I13318f57613d6bd60a5b7e81ebb3e35b3c225a0c
|
|
DynamicPartitionControl need the list of operations to calculate
COW sizes.
- Remove BootControlInterface::PartitionMetadata. Replace all references
with DeltaArchiveManifest. DeltaArchiveManifest has all information
that PartitionMetadata has.
- Rename all InitPartitionMetadata to PreparePartitionsForUpdate
- Change all PreparePartitionsForUpdate to use new signature
Bug: 138816109
Test: update_enigne_unittests --gtest_filter=*BootControl*:*Dynamic*
Change-Id: I4389ba2b1801addf8c3bc8395e2ea6a9a3ed27a0
|
|
Test: unittest
Bug: 138816109
Change-Id: I7ae65ba0bf36a6ca5085bc4ec2c46245288b4703
|
|
fs_mgr_get_super_partition_name() should be mocked because
it is an external dependency to libfs_mgr.
In tests, deliberately make GetSuperDevice() to return "fake_super"
instead of "super" to make sure it is mocked properly.
Test: run unittests
Test: manually apply OTA
Change-Id: I0f05d99bf168b6e658052b4bd67dc1e82ab36471
|
|
Some tests from boot_control_android_unittest only
test logic of UpdatePartitionMetadata. Move them to
dynamic_partition_control_android_unittest.
After moving the test, boot_control_android_unittest
can depend on the MockDynamicPartitionControl (which
is a mocked DynamicPartitionControlInterface) directly
again. It no longer depends on internal implementation
of DynamicPartitionControlAndroid.
Test: unittest
Fixes: 138333673
Change-Id: Idc5f11be98754b8f6d38fcb8604af497e5d86376
|