[roll] Roll fuchsia [vfs] Change ExecutionScope to use fuchsia-async cancellation

There are some changes in semantics:

1. Once shut down and the active-guard count reaches zero, it cannot be
   incremented again, which means that spawning new tasks when a future
   is dropped is no longer guaranteed to always run tasks.  This has
   implications for Fxfs and flushing files. I had to rework the code to
   make sure files get flushed before Fxfs is shut down.

2. Tasks that are spawned no longer hold a reference to its scope,
   which means that the caller must retain the scope.

3. Tasks are no longer guaranteed to run at least once when spawned. We
   no longer seem to depend on this.

Along the way, I spotted an issue with symlinks. They didn't have an
open count so it was possible to unlink them and then you'd get errors
if you tried to read the link. I've changed this to match what happens
on Linux: you can continue to read the link until the symlink is closed.

Original-Bug: 416349680
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1269645
Original-Revision: e79718b29c65b66ce5cff95c691b3e69af53d542
GitOrigin-RevId: 43d9c5ddfa82dacdd594991ee97295cb88af32a9
Change-Id: I06577cede0238d908a004320c9774e78466fedb1
1 file changed
tree: 8433f35d61baad774e7e089ee6e872c47f545c8c
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. flower
  6. jiri.lock
  7. MILESTONE
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. 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 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.