Commit graph

84816 commits

Author SHA1 Message Date
Treehugger Robot
f7fffb62d4 Merge "Allow Cow version v3 to be used" into main 2023-12-04 23:02:53 +00:00
Treehugger Robot
240f7084be Merge "Shove CowOperation type into source_info" into main 2023-12-04 18:50:46 +00:00
Kelvin Zhang
7d526560df Allow Cow version v3 to be used
This does not change the default cow version. Currently v2 is still the
default. This CL only enables OEMs to set virtual_ab_cow_version to 3
for testing purposes.

Test: th
Bug: 313962438
Change-Id: I7a328fa32283560a48604ffe02edd2551ac49a83
2023-12-04 09:29:20 -08:00
Kelvin Zhang
2bf1da5d2c Shove CowOperation type into source_info
We can shove type into source info to save 8 bits in per cow operation.
We only need 4 bits inside of source_info to enumerate all the types of
Cow Operation. Since CowOperationV3 is not used on disk(just yet) , we
can make format changes.

This CL is mechanical:
    1. Remove tye .type field from CowOperation struct
    2. Add a type() getter method to CowOperation struct
    3. Replace all existing usage of `type` member with the new getter

No functional changes, just refactorings.

Test: th
Bug: 304602386
Bug: 313962438

Change-Id: I85d89c71fc6afede12ea299a4a3e3b2184ea2d8b
2023-12-04 09:14:20 -08:00
Treehugger Robot
3ecba6b927 Merge "fs_mgr_overlayfs: MapScratchPartitionIfNeeded always tries to create scratch" into main 2023-12-04 02:53:30 +00:00
Elliott Hughes
1784219094 Merge "fs_mgr: IWYU include <algorithm> for std::sort" into main 2023-12-01 22:22:34 +00:00
Bart Van Assche
1a97c485d0 Merge "task_profiles.json: Set io.prio.class" into main 2023-12-01 18:02:56 +00:00
Bart Van Assche
a34c125cad Merge "service_test: Only run the ServiceStopTest as root" into main 2023-12-01 03:08:02 +00:00
Treehugger Robot
56f7436a3e Merge "Allow to set scudo allocation buffer size" into main 2023-12-01 02:52:38 +00:00
Daniel Rosenberg
4ae617f676 Merge changes I1ecdffcb,Ib0d1ea81 into main
* changes:
  fs_mgr: Support 16k F2FS
  fs_mgr_overlayfs: Support 16k F2FS
2023-12-01 00:52:16 +00:00
Bart Van Assche
9bba87244d task_profiles.json: Set io.prio.class
Provide an additional way to request the block layer to prioritize
foreground I/O over background I/O. This patch prepares for tests with
the mq-deadline I/O scheduler. While CFQ and BFQ support a "weight"
cgroup attribute, the mq-deadline scheduler does not. The mq-deadline
I/O scheduler only supports the I/O priority class for differentiating
I/O priorities.

The io.prio.class attribute is declared optional since this attribute
only exists if CONFIG_BLK_CGROUP_IOPRIO != n in the kernel
configuration.

Bug: 186902601
Change-Id: Iee1004cd0996e32245aff2b51772ef40178e024f
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-30 10:00:44 -08:00
Bart Van Assche
fb3e64ab42 service_test: Only run the ServiceStopTest as root
Despite 'require_root: true' in Android.bp for CtsInitTestCases, it can
happen that this test is run without root privileges. If that happens,
skip the ServiceStopTest.

Bug: 313551148
Change-Id: I45f29369915a1f61e08ffd9bf5601a83a147597c
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-30 10:00:43 -08:00
Treehugger Robot
58beb4a624 Merge "Remove marcone@google.com from trusty/OWNERS" into main 2023-11-30 17:08:20 +00:00
Owner Cleanup Bot
3d37da29e7 Remove marcone@google.com from trusty/OWNERS
This suggested change is automatically generated based on group
memberships and affiliations.
If this change is unnecessary or in error, vote CR -1 and the bot
will abandon it. Vote CR +1/2 to approve this change.

See the owner's recent activity for context:
https://android-review.googlesource.com/q/marcone@google.com

To report an issue, file a bug in the Infra>Codereview component.

Change-Id: Ia8f5d261cbfc7328c7dffa0bdf92a5732ba3eee8
2023-11-30 16:37:53 +00:00
Steven Moreland
e9c24760d3 Merge "Looper: Fixed compile error when enabling DEBUG_CALLBACKS" into main 2023-11-30 02:06:43 +00:00
Akilesh Kailash
37e7498fc0 Merge "snapshotctl: fsync after writing every 1MB buffer" into main 2023-11-29 20:37:55 +00:00
Kelvin Zhang
54702a79f9 Merge "Turn CowOperationType into an enum" into main 2023-11-29 20:26:05 +00:00
Akilesh Kailash
b78d0e2856 snapshotctl: fsync after writing every 1MB buffer
Sync writes after every 1MB instead of flushing at the end.

Bug: 299011882
Test: Boot device off snapshots
Change-Id: If91168ec92c2b2995bdf296ea1c7d4c261b12411
Signed-off-by: Akilesh Kailash <akailash@google.com>
2023-11-29 11:26:46 -08:00
Kelvin Zhang
1ccb347e87 Turn CowOperationType into an enum
There's a bug previsouly where we compare return value of
GetCowOpSourceInfoData() with CowOperationType. Such bugs are possible
because cow operation enums are weakly typed integers. Turn
CowOperationType into strongly typed enum to prevent such bugs.

Test: th
Bug: 304602386
Change-Id: If6941a4740c374ed066cf0aee9e52f4df05a9b38
2023-11-29 10:46:10 -08:00
Kai Sky
862f049d17 Looper: Fixed compile error when enabling DEBUG_CALLBACKS
When enabling DEBUG_CALLBACKS , compiler complains
for the undeclared identifier 'fd'.
Fix by removing undeclared objects.

Change-Id: I751a9ef9d8843350105acd6a30645f897050ffa4
2023-11-29 05:41:01 +00:00
Treehugger Robot
0ca4e8f4b4 Merge "service_test: Test stopping services after migration to another cgroup" into main 2023-11-28 00:14:31 +00:00
Treehugger Robot
57359b731e Merge "libprocessgroup: Stop services that have been migrated to another v2 cgroup" into main 2023-11-27 23:23:12 +00:00
Bart Van Assche
86a2ae28e6 service_test: Test stopping services after migration to another cgroup
The root cause of "After OTA, device is not responding" is that
Service::Stop() did not stop services that had been migrated to another
v2 cgroup. Add a unit test for that scenario.

Bug: 308900853
Change-Id: I590fde90e31326290c2c8ce8fce51e94b215a979
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-27 14:27:02 -08:00
Bart Van Assche
a43b96c157 libprocessgroup: Stop services that have been migrated to another v2 cgroup
CL 2828279 doesn't do what it's description says that it does. Making
Service::Stop() work for processes that have been migrated to another v2
cgroup requires changing DoKillProcessGroupOnce(). Hence this CL that
removes the early return statements from DoKillProcessGroupOnce().

Bug: 308900853
Change-Id: Ib798555feeb95a786a619c3d7013c7d5829b01ad
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-27 14:13:46 -08:00
Christopher Fore
fad8b7a130 fs_mgr: IWYU include <algorithm> for std::sort
GCC 14 starts to no longer include <algorithm> by default, resulting in
it needing to be explicitly declared.

Test: Recompiled with GCC 14 and succeeded

Change-Id: Ifc5dd58b7476ba728ae604cd2924cb68fbcab701
Signed-off-by: Christopher Fore <csfore@posteo.net>
2023-11-27 14:55:19 -05:00
Yi-Yo Chiang
3a22c9e16e fs_mgr_overlayfs: MapScratchPartitionIfNeeded always tries to create scratch
Simplify the logic of MapScratchPartitionIfNeeded to just map the
scratch partition unconditionally. If there is a "scratch" logical
partition available, we just assume it must be needed later to
facilitate overlayfs.

Going through the fstab & fs_mgr_overlayfs_candidate_list to determine
if overlayfs is needed or not might be inaccurate as the fstab passed into
MapScratchPartitionIfNeeded is incomplete (it includes only the
"first_stage_mount" entries). So the scratch device might not get created
even though there are some "late mount" partitions that need the scratch
device to facilitate overlayfs.

Bug: 306124139
Test: adb-remount-test
Change-Id: I8590750e822219dec3d7d3c8648e9c9a5a32f68c
2023-11-27 11:17:12 +00:00
Yi-Yo Chiang
455fb82bf9 Merge "fs_mgr_overlayfs: De-dup common methods" into main 2023-11-27 11:16:51 +00:00
Yi-Yo Chiang
16239ad862 fs_mgr_overlayfs: De-dup common methods
Keep only one copy of GetBootScratchDevice().

Bug: 306124139
Test: build
Change-Id: I11603566ab454eb028b50873d66f4ab967b204f9
2023-11-27 11:16:41 +00:00
Yi-Yo Chiang
475599f5c5 Merge "second-stage-init: Don't move submounts when mounting overlayfs" into main 2023-11-27 11:16:24 +00:00
Yi-Yo Chiang
28113cf3f6 second-stage-init: Don't move submounts when mounting overlayfs
Right now there is a bug in second-stage-init that screws up the
overlayfs overrides. This happens because:
1. second-stage-init mount_all might be executed in the "bootstrap"
   mount namespace.
2. In order to move (MS_MOVE) submounts in fs_mgr_overlayfs_mount_all(),
   we change the mount propagation type of overridden filesystems to
   MS_PRIVATE.
3. This means that the "default" mount namespace would not receive the
   mount events of the overlayfs overrides.
4. After /data is mounted, init would switch to the "default" namespace.
   This means any new processes spawned after this period would not be
   able to see the overlayfs overrides.

We fix this by changing the mount order of second-stage-init mount_all
to mount the overlayfs override of a partition immediately after the
partition is mounted. This way we don't need to move any submounts as
there can't be any, thus we don't need to set any mountpoint to
MS_PRIVATE so the mount event of the overlayfs would be propagated to
the "default" mount namespace, too.

Bug: 309407859
Bug: 306124139
Test: adb-remount-test
Test: verify that overlayfs tookover successfully from second-stage-init
Change-Id: If2ff4852516292ccbc7abdeebe0e9a7c1c7ba606
2023-11-27 17:16:40 +08:00
Treehugger Robot
bc907c00f4 Merge "Add exfat fs in fs_mgr" into main 2023-11-24 10:55:29 +00:00
yanxu
3f9f595067 Add exfat fs in fs_mgr
Need to support exfat fs type point mount in recovery mode

Bug:312674538
Test: SIU (Apply update from SD card) in recovery mode

Change-Id: I2735e5068c47b183a25d2305bca89f08de1e32c7
2023-11-24 10:26:59 +00:00
Treehugger Robot
dfe6c802d0 Merge "init: Fix signalfd support in WaitToBeReaped()" into main 2023-11-22 18:06:48 +00:00
Bart Van Assche
1daf88d6ce init: Fix signalfd support in WaitToBeReaped()
Add an Epoll::Open() call such that the Epoll::Wait() calls wait for the
signalfd. Rename DiscardSiginfo() into HandleSignal(). Handle Epoll method
call failures. Test whether alive_pids is empty once per loop iteration.

Test: CtsInitTestCases:ServiceStopTest
Change-Id: I16c27aa74d61f889b304f3e59cd3c5255c299ce1
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-22 09:06:02 -08:00
Treehugger Robot
c93c5eff0e Merge "init: Introduce the function ReapAndRemove()" into main 2023-11-22 02:52:44 +00:00
Daniel Zheng
1056a1172a Merge "libsnapshot: add sequence data" into main 2023-11-21 22:31:57 +00:00
Kelvin Zhang
06d80246c8 Merge "Make RemoveCgroup idempotent" into main 2023-11-21 21:05:43 +00:00
Daniel Zheng
43aeb22858 libsnapshot: add sequence data
v3 writer to write sequence data. Sequence data will be written after
the scratch space and before the resume space. Since this is just a list
of integers, writing and reading should be trivial

Test: cow_api_test
Change-Id: If3b6b1cfa155aeb65bf693263fc373154ba8e81d
2023-11-21 09:50:16 -08:00
Daniel Zheng
d2d7a1ff0e Merge changes I56a0d747,I1585601a,I9e44330e into main
* changes:
  libsnapshot: move header op count setup
  libsnapshot: sync header metadata
  libsnapshot: update variable name
2023-11-21 17:49:29 +00:00
Bart Van Assche
9c6b723adb init: Introduce the function ReapAndRemove()
Prepare for adding a second caller of ReapAndRemove().

Change-Id: I0f54af6136f49caa0198c123a4c8de968e5f41ba
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-11-21 09:16:50 -08:00
Yi-Yo Chiang
7f322bcaf0 Merge changes I12bc2ccd,I8174257c into main
* changes:
  fs_mgr_overlayfs: Fix "/" mount propagation type after remount
  fs_mgr_overlayfs: Fix submount propagation type after remount
2023-11-21 09:36:47 +00:00
Daniel Norman
97807f53ef Merge "Assigns system user/group to /dev/hidraw* devices." into main 2023-11-21 02:10:09 +00:00
Treehugger Robot
2e2e836a89 Merge "Use vendor/etc/ueventd.rc on microdroid" into main 2023-11-21 02:03:16 +00:00
Inseob Kim
52d8fe9b04 Use vendor/etc/ueventd.rc on microdroid
... because vendors should be able to extend ueventd.rc for their own
devices (in microdroid) and microdroid's system.img can't be amended.

Bug: N/A
Test: boot microdroid
Change-Id: I7ceaf3f87453c8e29f9d9bf03d4d1866185d4fec
2023-11-21 10:05:49 +09:00
Daniel Zheng
209fda3562 libsnapshot: move header op count setup
Op count should be set before we sync the header. This way subsequence
writers can initialize with the correct op buffer size

Test: cow_api_test
Change-Id: I56a0d747b3f2a1d9d582d8f9d643b81cbdd9b8d7
2023-11-20 11:53:21 -08:00
Daniel Zheng
763776435d libsnapshot: sync header metadata
After we write emit a label, we need to update the number of resume
points + sequence data and op_count. Realistically we could just call
Finalize, but maybe synching these specific fields could prevent
unexpected outcomes.

Test: cow_api_test
Change-Id: I1585601a134221689ce8d5675a2a3e32f1e8a0e6
2023-11-20 11:53:20 -08:00
Daniel Zheng
5d30009a7e libsnapshot: update variable name
updating name to count rather than buffer size

Test: cow_api_test
Change-Id: I9e44330e7a230b5ab5f5e914ef74a63cc4ebaa61
2023-11-20 11:40:36 -08:00
Treehugger Robot
142f8129ec Merge "init: Combine two global sigchld_fd variables into one" into main 2023-11-20 19:18:39 +00:00
Daniel Zheng
bc518418c7 Merge "libsnapshot: update resume offset calculation" into main 2023-11-20 18:54:19 +00:00
Treehugger Robot
558fd9ab7a Merge "Add StrongPointer::release()" into main 2023-11-20 18:27:15 +00:00