[roll] Roll fuchsia [pkgfs] Cache contents of meta.fars

pkgfs is very slow to read files out of meta.fars with lots of
files. This change caches the contents of a meta.far (filenames within
the .far) so pkgfs needs to read the meta.far's index less often. This
creates about a 2x speedup to read a file in a package of about 1000
files.

There's more optimization to be done here, and so we've added tests to
poke at some edge cases of meta.far handling, like file open/close
interleaving. However, for the change itself, the e2e suites and the
existing pkgfs integration tests will exercise the changed behavior
extensively. This change should have no visible effect on pkgfs
behavior, and should be purely an optimization.

Test: added pkgfs integration tests for edge cases in meta.far handling
Test: fx test //src/sys/pkg
Test: fx test fuchsia-pkg-testing-tests (pkgfs integration tests)
Multiply: fuchsia-pkg://fuchsia.com/fuchsia-pkg-testing-tests#meta/pkgfs-test.cmx
Original-Bug: 71656

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/496978
Original-Revision: c1465e2b83b7a24d2d9d4a991236fb41e68ca833
GitOrigin-RevId: a3712e7318a035796d7e629d322debe7ca6a9dd8
Change-Id: I32b99b2cd3f3c280b83cf53e790a865b65a31644
1 file changed
tree: 4fcb581eb8dea3b80dd9eb4e1a7d7db30eddc9ea
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
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 via the IRC channel #fuchsia on Freenode.

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.