[roll] Roll fuchsia [starnix][kernel] Make DynamicFile::seek() lazy

Changes DynamicFile::seek() to be lazy by removing the eager dummy
read-internal invocation when seeking to nonzero offsets.

Previously, eager seek was designed to force immediate data generation
and evaluation of the dynamic file source during the seek() syscall.
This was an artifact of DynamicFile initially being backed by
SeqFileState, which always reset its cursor and buffer on a seek offset
mismatch. Eager seeking was introduced to ensure that the dynamic file
contents were generated and cached at the moment seek() was called,
preventing inconsistencies with sequential reads when kernel states
shifted.

This eager evaluation is no longer necessary because DynamicFile's
read() pipeline has matured to natively support dynamic catch-up and
sequential resets on offset mismatches. Furthermore, evaluating state
dynamically at read-time aligns with Linux's behavior on procfs and
sysfs.

Making seek() lazy has the following functional benefits:
- Converts seeking in pseudo-dynamic files into a constant-time metadata
  operation, eliminating unnecessary generation overhead.
- Corrects error reporting semantics to match Linux: lseek() past the
  end of a pseudo-dynamic file now succeeds eagerly, and only returns
  EOF or transient errors during the subsequent read().

The following new syscall tests verify behavioral parity with Linux:
- ProcTaskDirTest.DynamicFileSeek
- ProcTaskDirTest.DynamicFileSeekPastEnd

Original-Original-Bug: 297440106
Test: starnix_core_tests
Test: procfs_test
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1629477
Original-Original-Revision: 48c2b381515cfb1fe737d663770349777e32c8fa
GitOrigin-RevId: aed064c367b6f8dcd1db440e414327b128d760d5
Change-Id: I1b31ec69f582c07651bca3892dc0489800cde0a6
1 file changed
tree: df6ba0d65144741537cf8923f234eab5699e1995
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. 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.