[roll] Roll fuchsia [fxfs] Reduce the size KeyManager futures

KeyManager::get_key and the fscrypt variants were taking a future that
would fetch the wrapped keys if the keys weren't already cached. The
fetching future is typically more than 2KB. get_key moves the fetching
future into an Option which requires space for a second copy of the
fetching future in get_key's future. KeyManager::get_keys takes the
fetching future out of the Option to await it which moves into
get_keys's future. get_key awaits get_keys so get_key's future has space
for get_keys's future making get_key's future 3x the size of the
fetching future.

Changing get_key and the fscrypt variants to take an AsyncFnOnce instead
of the future stops the tripling of the size of the future. The
AsyncFnOnce is typically only 16 bytes and the Option of it is also only
16 bytes. Space for the fetching future is only necessary inside of
get_keys where it's created.

This reduces the typical size of KeyManager::get_key's future from 7344
bytes to 2656 bytes.

Original-Bug: b/393365596
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1198688
Original-Revision: 90a9b892d74fa05b0d6ef20395a23bbab6f9a4ae
GitOrigin-RevId: 4480ddb3e730df1aa693d846b87ffb0d738ae5f1
Change-Id: I872f74756c09eb74a4c25c4f64b6d0c27f4c77bf
1 file changed
tree: 40529e1316507d805f955e5359064b0e7f26672f
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.