[roll] Roll fuchsia [kernel][vm] Robust PageRequest batching

Changes the batching state from being inferred from the return value of
PageSource::GetPage, to being queryable from the PageSource. This has
three benefits
1. If an in progress batch request is given to the wrong PageSource it
can be detected and safely handled. This cannot happen today, but could
happen when there are additional implementors of PageRequestInterface.
Specifically with an anonmyous page requester you could have a
copy-on-write child of a pager backed VMO that has CommitRange called.
The first page could be present in the parent, but missing in the
child, requiring a page allocation, which could fail causing the
PageRequest to be filled in. Since its in batch mode we would continue
and then possibly find a page missing from the root vmo, and attempt
to fill in the PageRequest using the PageSource.
2. The ZX_ERR_NEXT state that previously meant further batching was
possible is also used for loop control everywhere in the VM system.
Propagating GetPage statuses up to the root caller therefore has the
chance of colliding with an attempt to perform a ForEveryPage or
equivalent iteration. This does not happen today, but this is a hazard
that would not be easily detected.
3. Additional assertions can be added using this state to ensure the
page request API is used correctly.

Original-Bug: 99890
Run-All-Tests: True
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/679849
Original-Revision: 2f5df2c170150b19c0fd8adfae34817b8f7a6566
GitOrigin-RevId: 08a031e8e5b80e3599567e0bc74d74124617f642
Change-Id: I6f82a07cd6a5b1cbbadfe996316288ff0230cff8
1 file changed
tree: 4d4c48c86c2a5cb0eaa7c45e996b9321cbc4bce1
  1. infra/
  2. third_party/
  3. cts
  4. firmware
  5. flower
  6. fortune-teller
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. 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 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.