[roll] Roll fuchsia [fxfs] Rework metadata space reservations

This includes:

 1. Switch to having just a single reservation for all metadata.

 2. Metadata space either needs to be reserved up-front or it can be
    borrowed.  When it is borrowed, we have to keep track of it so that
    upon remount, we can set up reservations correctly.

 3. Separate out the overwrite mode so that it has its own method that
    doesn't take a transaction.  This avoids locking issues (which
    allows us to just use Transaction::commit() in the journal) and
    makes clear that overwrite involves no metadata changes.

 4. Rename TreeSeal and TreeCompact to be BeginFlush and EndFlush as that
    now more correctly indicates what is happening.

 5. Tracking the dependencies on the journal needs to be done whilst
    under transaction locks and we can use BeginFlush and EndFlush for
    that, which obviates the need for ObjectSync, so it is gone.

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/540065
Original-Revision: 70b0f30b624ee28d60c650594f6ff55c720971df
GitOrigin-RevId: 0fad6dafc034bb4b4a0c174c846fb37d571c30e4
Change-Id: Iaeff8bbddb02de089197b0673bc7cfc187481eac
1 file changed
tree: 747bf19c369c46d9d24272454f3ebd7c4f587b68
  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.