Commit graph

4994 commits

Author SHA1 Message Date
Eric Biggers
b4faeb8d44 cryptfs: kill processes more quickly in wait_and_unmount()
In wait_and_unmount(), kill the processes with open files after umount()
has been failing for 2 seconds rather than 17 seconds.  This avoids a
long boot delay on devices that use FDE.

Detailed explanation:

On FDE devices, vold needs to unmount the tmpfs /data in order to mount
the real, decrypted /data.  On first boot, it also needs to unmount the
unencrypted /data in order to encrypt it in-place.

/data can't be unmounted if files are open inside it.  In theory, init
is responsible for killing all processes with open files in /data, via
the property trigger "vold.decrypt=trigger_shutdown_framework".

However, years ago, commit 6e8440fd50 ("cryptfs: kill processes with
open files on tmpfs /data") added a fallback where vold kills the
processes itself.  Since then, in practice people have increasingly been
relying on this fallback, as services keep being added that use /data
but don't get stopped by trigger_shutdown_framework.

This is slowing down boot, as vold sleeps for 17 seconds before it
actually kills the processes.

The problematic services include services that are now started
explicitly in the post-fs-data trigger rather than implicitly as part of
a class (e.g., tombstoned), as well as services that now need to be
started as part of one of the early-boot classes like core or early_hal
but can still open files in /data later (e.g. keystore2 and credstore).

Another complication is that on default-encrypted devices (devices with
no PIN/pattern/password), trigger_shutdown_framework isn't run at all,
but rather it's expected that the relevant services simply weren't
started yet.  This means that we can't fix the problem just by fixing
trigger_shutdown_framework to kill all the needed processes.

Therefore, given that the vold fallback is being relied on in practice,
and FDE won't be supported much longer anyway (so simple fixes are very
much preferable here), let's just change wait_and_unmount() in vold to
use more appropriate timeouts.  Instead of waiting for 17 seconds before
killing processes, just wait for 2 seconds.  Keep the total timeout of
20 seconds, but spend most of it retrying killing the processes, and
only if the unmount is still failing.

This avoids the long boot delays in practice.

Bug: 187231646
Bug: 186165644
Test: Tested FDE on Cuttlefish, and checked logcat to verify that the
      boot delay is gone.
Change-Id: Id06a9615a87988c8336396c49ee914b35f8d585b
2021-05-10 20:44:07 -07:00
Songchun Fan
0e53c1cdb0 [vold] pass along sysfs name in setOptions
Ignore-AOSP-First: Will cherry-pick to AOSP

BUG: 187308584
Test: atest CtsContentTestCases:android.content.pm.cts.PackageManagerShellCommandIncrementalTest#testInstallWithIdSigNoMissingPages
Change-Id: Iacfe6b735458051f2848b1b766c2b00198b397d9
2021-05-10 16:22:40 -07:00
Eric Biggers
c78ae60087 Show names of processes killed by KillProcessesWithOpenFiles()
Otherwise only the pids are shown, and it's hard to tell which
processes actually got killed.

Bug: 187231646
Change-Id: Icccf60d0ad4439d702f36ace31abe092df1c69c2
2021-05-10 17:34:11 +00:00
Xin Li
9eb4ac8427 [automerger skipped] Merge "DO NOT MERGE - Mark RQ2A.210105.001 as merged." am: ef439c5367 -s ours am: 477eb9ac9c -s ours am: 4e3d21ca95 -s ours am: 0ae5274090 -s ours
am skip reason: Merged-In Ic37985f98e6cbfe4fa38b981d3332c4dfc40c5b8 with SHA-1 5f2a9fee66 is already in history

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1699301

Change-Id: I498383258dd4de3f5b632ea0768c19e6e7863f9c
2021-05-08 03:04:10 +00:00
Xin Li
0ae5274090 [automerger skipped] Merge "DO NOT MERGE - Mark RQ2A.210105.001 as merged." am: ef439c5367 -s ours am: 477eb9ac9c -s ours am: 4e3d21ca95 -s ours
am skip reason: subject contains skip directive

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1699301

Change-Id: I4e3c7fc2fad871976660fa73053cfc3e5d8ea041
2021-05-08 02:37:01 +00:00
Xin Li
4e3d21ca95 [automerger skipped] Merge "DO NOT MERGE - Mark RQ2A.210105.001 as merged." am: ef439c5367 -s ours am: 477eb9ac9c -s ours
am skip reason: Merged-In Ic37985f98e6cbfe4fa38b981d3332c4dfc40c5b8 with SHA-1 5f2a9fee66 is already in history

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1699301

Change-Id: Ifbb2163da12fde662e0f36a992feb1991ef8e37c
2021-05-08 02:13:44 +00:00
Xin Li
477eb9ac9c [automerger skipped] Merge "DO NOT MERGE - Mark RQ2A.210105.001 as merged." am: ef439c5367 -s ours
am skip reason: Merged-In Ic37985f98e6cbfe4fa38b981d3332c4dfc40c5b8 with SHA-1 5f2a9fee66 is already in history

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1699301

Change-Id: Icb4c65c9d0b4e9f1dfefb9d7bdf3e68a799e7fa2
2021-05-08 01:48:49 +00:00
Xin Li
ef439c5367 Merge "DO NOT MERGE - Mark RQ2A.210105.001 as merged." 2021-05-08 01:28:13 +00:00
Xin Li
140116266e DO NOT MERGE - Mark RQ2A.210105.001 as merged.
Bug: 180401296
Merged-In: Ic37985f98e6cbfe4fa38b981d3332c4dfc40c5b8
Change-Id: Ic82b58f8975ae7b5410d87536342f83e827a7893
2021-05-07 14:32:31 -07:00
rickywai
7a3113c385 Merge "Always unmount data and obb directory that mounted" am: ae11ab712f am: 270b1dabbc am: 61ae848c4d am: 2645038034
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1697365

Change-Id: I00da114099a854a70765aa8822507163f31b9f55
2021-05-06 09:25:13 +00:00
rickywai
2645038034 Merge "Always unmount data and obb directory that mounted" am: ae11ab712f am: 270b1dabbc am: 61ae848c4d
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1697365

Change-Id: Ief7e515c3e4ebe52fc9dbcfc781bbcd66c020f80
2021-05-06 09:11:49 +00:00
rickywai
61ae848c4d Merge "Always unmount data and obb directory that mounted" am: ae11ab712f am: 270b1dabbc
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1697365

Change-Id: I3d068df59d9ba0786437a32f1750d271f142581d
2021-05-06 08:40:40 +00:00
rickywai
270b1dabbc Merge "Always unmount data and obb directory that mounted" am: ae11ab712f
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1697365

Change-Id: I44aaffd7ecd95ec60af7559592d684460b32c5da
2021-05-06 08:25:13 +00:00
rickywai
ae11ab712f Merge "Always unmount data and obb directory that mounted" 2021-05-06 08:09:05 +00:00
Alan Stokes
1446f6fb32 [automerger skipped] Merge "Only kill apps with storage app data isolation enabled" am: b2678b6654 am: 53d7796ccd am: dedb2c1a13 -s ours am: d24f5a26e8 -s ours
am skip reason: Merged-In I45d9a63ed47cbc27aebb63357a43f51ad62275db with SHA-1 a58b535495 is already in history

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1690874

Change-Id: Iee959b054ab7d6104e0d3713347e57c301ba7976
2021-05-05 15:26:57 +00:00
Alan Stokes
d24f5a26e8 [automerger skipped] Merge "Only kill apps with storage app data isolation enabled" am: b2678b6654 am: 53d7796ccd am: dedb2c1a13 -s ours
am skip reason: Merged-In I45d9a63ed47cbc27aebb63357a43f51ad62275db with SHA-1 a58b535495 is already in history

Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1690874

Change-Id: I641a83e69e7b3ffc267997503cc741cb8a04f030
2021-05-05 15:04:04 +00:00
Alan Stokes
dedb2c1a13 Merge "Only kill apps with storage app data isolation enabled" am: b2678b6654 am: 53d7796ccd
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1690874

Change-Id: I807f10f18d56c8ff1ef36f6b5cad85f2ee911184
2021-05-05 14:45:44 +00:00
Ricky Wai
5f2a9fee66 Always unmount data and obb directory that mounted
Otherwise, when system removes user's volume, it will hang
as there are mounts (obb and data mounts) still remain mounted in system.

Bug: 187122943
Test: atest UserLifecycleTests#managedProfileUnlock_stopped, it's not blocked anymore

Change-Id: Ic37985f98e6cbfe4fa38b981d3332c4dfc40c5b8
2021-05-05 14:44:16 +00:00
Alan Stokes
53d7796ccd Merge "Only kill apps with storage app data isolation enabled" am: b2678b6654
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1690874

Change-Id: I063073d4419566c11207a147ac3260d4cee671a3
2021-05-05 14:30:21 +00:00
Alan Stokes
b2678b6654 Merge "Only kill apps with storage app data isolation enabled" 2021-05-05 14:16:00 +00:00
Eric Biggers
25e8d1805c Merge "Log error message if setting project quota ID fails" am: 7505efbd5d am: 44df16de69 am: 1768a47b25 am: 630fa5785e
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1694189

Change-Id: I895ba92166b9760564ab651c22b8f5782e567a0f
2021-05-04 17:11:54 +00:00
Eric Biggers
630fa5785e Merge "Log error message if setting project quota ID fails" am: 7505efbd5d am: 44df16de69 am: 1768a47b25
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1694189

Change-Id: If76a5f6341b8f21ed49e079e14bd67362fb35f7a
2021-05-04 16:58:24 +00:00
Eric Biggers
1768a47b25 Merge "Log error message if setting project quota ID fails" am: 7505efbd5d am: 44df16de69
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1694189

Change-Id: Idc0cff5798358f977445ebe4f104ccf2fbb42cce
2021-05-04 16:42:09 +00:00
Eric Biggers
44df16de69 Merge "Log error message if setting project quota ID fails" am: 7505efbd5d
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1694189

Change-Id: I64ee98eb6505837197aa509a8b9e21a952739966
2021-05-04 16:19:11 +00:00
Eric Biggers
7505efbd5d Merge "Log error message if setting project quota ID fails" 2021-05-04 16:06:14 +00:00
Songchun Fan
bcd8884b17 Merge "[vold] pass sysfs_name to mount options" into sc-dev am: 5c0e80571f
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/vold/+/14329569

Change-Id: Iac54e371e9728bdf92570d0f1bf5172308562cad
2021-05-04 00:34:10 +00:00
Songchun Fan
5c0e80571f Merge "[vold] pass sysfs_name to mount options" into sc-dev 2021-05-04 00:14:40 +00:00
Eric Biggers
39aa9584b1 Log error message if setting project quota ID fails
Otherwise, the only sign of what went wrong may be system_server
logging a "ServiceSpecificException".

Bug: 187079978
Change-Id: I59b2ba2b0e679dfd1ec1fd8fff6790256fbfdf29
2021-05-03 12:39:36 -07:00
Ricky Wai
23356377ae Only kill apps with storage app data isolation enabled
Originally it kills all the apps with obb and data mounted.
Due to recent changes, all apps will have obb and data dirs mounted
in default root namespace. Hence all apps will be killed by
by KillProcessesWithMounts().

To fix this, we also check if the dir is mounted as tmpfs,
as the default namespace one is bind mounted to lowerfs,
which app data isolation is mounted as tmpfs, so we only
kill the process that have obb dir mounted as tmpfs.

Bug: 148049767
Test: Able to boot without warnings
Change-Id: I5f862ad6f64f5df739b68ea7c9815352bae3be5c
Merged-In: I45d9a63ed47cbc27aebb63357a43f51ad62275db
2021-04-30 13:58:07 +00:00
Ricky Wai
2d85b3cfc0 Merge "Only kill apps with storage app data isolation enabled" into sc-dev am: cebee9c533
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/vold/+/14353409

Change-Id: I10982bd449db3391dd1c8726efe4a2d5c63b7829
2021-04-30 13:53:54 +00:00
Ricky Wai
a92ed67d4b Change mounting storage data and obb flag to on by default am: 4ae2c65f8d
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/vold/+/14317138

Change-Id: I2f4a5ee5e0328711fc684d155996b2d6f211c005
2021-04-30 13:53:53 +00:00
Ricky Wai
cebee9c533 Merge "Only kill apps with storage app data isolation enabled" into sc-dev 2021-04-30 13:49:13 +00:00
Ricky Wai
a58b535495 Only kill apps with storage app data isolation enabled
Originally it kills all the apps with obb and data mounted.
Due to recent changes, all apps will have obb and data dirs mounted
in default root namespace. Hence all apps will be killed by
by KillProcessesWithMounts().

To fix this, we also check if the dir is mounted as tmpfs,
as the default namespace one is bind mounted to lowerfs,
which app data isolation is mounted as tmpfs, so we only
kill the process that have obb dir mounted as tmpfs.

Bug: 148049767
Test: Able to boot without warnings / errors
Ignore-AOSP-First: Merge it along with other CLs, will cherry-pick to
AOSP afterwards.

Change-Id: I45d9a63ed47cbc27aebb63357a43f51ad62275db
2021-04-30 10:06:32 +01:00
Ricky Wai
4ae2c65f8d Change mounting storage data and obb flag to on by default
Change mounting storage data and obb flag to on by default

Test: unbundled/launcher/nexus_unit_test_multi_device_platform
Test: atest android.appsecurity.cts.ExternalStorageHostTest
Test: atest AdoptableHostTest
Test: pass cts/cts_postsubmit_cf_stable-cloud-tf

Bug: 148049767
Ignore-AOSP-First: Merge it along with other CLs, will cherry-pick to
AOSP afterwards.

Change-Id: I6391b7381699b4ffdbf715b67938bc3f79a5210c
2021-04-29 15:59:13 +00:00
Songchun Fan
046e68abd6 [vold] pass sysfs_name to mount options
Ignore-AOSP-First: Will cherry-pick to AOSP

Test: manual
BUG: 184844615
Change-Id: I216210132f49f55098c0f2d1b8d4e571b22cfcc4
2021-04-29 08:35:43 -07:00
Treehugger Robot
ee2f2e081d Merge "Fix cryptfs RSA signing with keystore2" am: d2bb367549 am: 97455f85b0 am: f04542fcac
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1684055

Change-Id: I0762df0881f194acd1d1a13dc1eae54647ac02f6
2021-04-26 20:27:50 +00:00
Treehugger Robot
f04542fcac Merge "Fix cryptfs RSA signing with keystore2" am: d2bb367549 am: 97455f85b0
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1684055

Change-Id: Ia25afd08bb0a0400d24343f37aeea4246f3ec1e8
2021-04-26 19:50:00 +00:00
Treehugger Robot
97455f85b0 Merge "Fix cryptfs RSA signing with keystore2" am: d2bb367549
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1684055

Change-Id: Ib91a29bf3d216c09ece619b9554c8f391efbe5fd
2021-04-26 19:13:28 +00:00
Treehugger Robot
d2bb367549 Merge "Fix cryptfs RSA signing with keystore2" 2021-04-26 18:51:13 +00:00
Hasini Gunasinghe
33f9b160a2 Merge "Make vold use the updated keystore 2 API for storage keys." am: 68bdb45cf8 am: 0e9eb8ebca am: d14ab5c35c
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1681547

Change-Id: I26878bfc82857c05539c1a2705ddcb3fad0c3fb4
2021-04-23 23:48:18 +00:00
Hasini Gunasinghe
d14ab5c35c Merge "Make vold use the updated keystore 2 API for storage keys." am: 68bdb45cf8 am: 0e9eb8ebca
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1681547

Change-Id: I8ee13ffd60784cee2ffbe8ff640b30a0f7716f5f
2021-04-23 23:25:35 +00:00
Hasini Gunasinghe
0e9eb8ebca Merge "Make vold use the updated keystore 2 API for storage keys." am: 68bdb45cf8
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1681547

Change-Id: Ib4156e85984c903cf521977e39522d013daf140c
2021-04-23 23:03:46 +00:00
Hasini Gunasinghe
68bdb45cf8 Merge "Make vold use the updated keystore 2 API for storage keys." 2021-04-23 22:39:04 +00:00
Eric Biggers
940c0e5f6e Fix cryptfs RSA signing with keystore2
Fix KeymasterOperation::updateCompletely() to not treat an empty output
as an error, since for RSA signing (used by cryptfs / FDE) it is
expected that the output from update() be empty.  The output is instead
produced at the end by finish().

This is one of a set of changes that is needed to get FDE working again
so that devices that launched with FDE can be upgraded to Android 12.

Bug: 186165644
Change-Id: Icf120f8b9526d051d0ebe16bc8ad1edf712241e1
2021-04-23 10:44:41 -07:00
Jaegeuk Kim
5b6c40e3c0 Merge "mkfs_f2fs: give the log in kernel" am: 177b9db866 am: b79f93bea9 am: 52b6cc4a8a
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1677035

Change-Id: Idc20fc59694a4fefb0118c9e18c948e3af8cd8fe
2021-04-20 23:20:48 +00:00
Jaegeuk Kim
52b6cc4a8a Merge "mkfs_f2fs: give the log in kernel" am: 177b9db866 am: b79f93bea9
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1677035

Change-Id: I10b8cf99a771b28e66a2c9a391b7c9d00281d492
2021-04-20 22:54:45 +00:00
Jaegeuk Kim
b79f93bea9 Merge "mkfs_f2fs: give the log in kernel" am: 177b9db866
Original change: https://android-review.googlesource.com/c/platform/system/vold/+/1677035

Change-Id: I55cce35d98afdf058854746e90c42be6c4f7d52c
2021-04-20 22:26:22 +00:00
Jaegeuk Kim
177b9db866 Merge "mkfs_f2fs: give the log in kernel" 2021-04-20 22:08:26 +00:00
Janis Danisevskis
3915b08f80 Make vold use the updated keystore 2 API for storage keys.
This CL updates vold to use the updated storage key API that provides an
optional upgraded key blob. In this patch the upgraded key blob is not
yet stored by vold.

Bug: 185811713
Test: N/A
Change-Id: I39eeb20df0eb2b023479f3adebab264d29d00048
2021-04-20 12:53:12 -07:00
Jaegeuk Kim
2c1380f1ab mkfs_f2fs: give the log in kernel
It's very useful to see the mkfs log in console to debug any issues.

Bug: 172378121
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: Icdac3609860cf0bba3fa758cead885bd4960f2c0
2021-04-15 20:24:04 -07:00