commit | 15bceab813bfe3ccd5536d9dab65fc5f4d4c5783 | [log] [tgz] |
---|---|---|
author | Martin Lindsay <mlindsay@fuchsia.infra.roller.google.com> | Mon Jan 20 16:17:43 2025 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Jan 20 16:19:12 2025 -0800 |
tree | 55289a86a9bc9fde7a8600adfd14e84e09cc305b | |
parent | 63d5adb3e31aab9535abb0b16c5f68f618318457 [diff] |
[roll] Roll fuchsia [fxfs] Ensure that link accesses a consistent file. Adds a loop since we need to take a lock on the file object but we don't know what the object is until we look it up. Ensure under lock that the file in that location hasn't changed. Otherwise it may have been unlinked between the lookup and the lock, and may be marked for purge. As long as the file is still there after the lookup under lock, then it can't be marked for purge, and whatever other races may have occurred are irrelevant since this file was in the directory under that name at some pointed during the call and the thing found there is still valid to be linked. Adds a test to catch the naive TOCTOU based on the requisite transaction locks for the operations. Updates a NOT_FOUND error to be INCONSISTENT, since the code path there is a result of looking up an object id that no longer exists. Original-Bug: b/388149864 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1190232 Original-Revision: 019d76c331d717729db51a1c07557f2843150013 GitOrigin-RevId: 2874c3a84cf348edfe831e62846104f09081784e Change-Id: I962c1596993e047e7c5d700b230edb5a80230cea
This repository contains Fuchsia's Global Integration manifest files.
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.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party
.