Promote filesystem R/W gaps and add mount-grade driver architecture - #104
Open
Hawkynt wants to merge 189 commits into
Open
Promote filesystem R/W gaps and add mount-grade driver architecture#104Hawkynt wants to merge 189 commits into
Hawkynt wants to merge 189 commits into
Conversation
Hawkynt
force-pushed
the
feat/filesystem-rw-gaps
branch
3 times, most recently
from
August 29, 2026 13:33
ef10fd4 to
3112e33
Compare
Hawkynt
force-pushed
the
feat/filesystem-rw-gaps
branch
from
August 29, 2026 13:43
3112e33 to
214ae8e
Compare
…t see optimizer-wire.py inserts a generic multi-entry optimizer into ArchiveOperations.Optimize naming FormatRegistry, IArchiveCreatable, IFormatOptionsSchema and FormatOptionKind unqualified. The file's only using is the F alias for FormatDetector.Format, and every one of its existing references to that namespace is written out in full, so the patched file did not compile and the prepare job failed at "Build tests" before any of the maintenance tests could run. The generated block now qualifies those four the way the rest of the file does.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
This PR now covers two related but deliberately separate surfaces:
FormatCapabilities.CanModifymeans an existing image can be edited and verified; the implementation may patch in place, relayout, copy-on-write, or rebuild where that is the correct image-editor strategy;IFilesystemDriverProvider/IFilesystemSessioncontract with stable object identities, positional handles, block devices, explicit durability models, transactions and fail-closed per-image profiles.Archive-level R/W does not imply
FilesystemDriverProfile.CanMountWritable.Offline R/W promotions
DMG / UDIF
blkx/ plist /kolymetadataUEFI Firmware Volume
OrangeFS / PVFS2 DBPF
object.binwhile preserving DBPF metadataFlattened Device Tree
boot_cpuid_physReFS
SquashFS / CramFS / EROFS
EWF
media.rawOther stale capability fixes
Mount-grade filesystem driver architecture
Common contracts
FilesystemNodeId: path-independent object identityIFilesystemSession: lookup/enumerate/stat plus namespace mutation surfaceIFilesystemFileHandle: positional I/O; no shared mutableStream.PositionIRandomAccessBlockDevice: container-independent logical block I/OIRawTrackDevice: variable-length GCR/MFM/flux-style media layerFilesystemMutationModelRepository-wide coverage invariant
Compression.LibandHawkynt.FileFormats.FileSystemsnow reference allFileSystems/FileSystem.*/*.csprojprojects through an exhaustive project globFileSystem.*namespaces and discovers public native sidecars without reflectionFilesystemDriverCoverageTestsmakes this a CI invariant for current and future filesystem projectsGetFilesystemDriverCoverage()distinguishes native descriptor providers, generated native sidecars and archive projectionsLarge-file-safe fallback
OpenEntryno longer materializes the whole file into onebyte[]; it uses a bounded delete-on-close temporary-file stream when no native entry stream existsSpoolingReadOnlyFileHandlegives readers with correct streaming extraction positional handles without an array-size ceilingNative filesystem sessions added
Why mounted writes are still gated
Existing archive
Add/Removeimplementations are intentionally not reused as mounted write transactions.CanMountWritablestays false until each native driver can prove its complete durability model.Examples of remaining write blockers:
$LogFilepublication/replay and metadata/security semanticsTests
In addition to the existing format round-trips, this PR adds driver-level coverage for:
docs/FILESYSTEM-DRIVER-ARCHITECTURE.mddocuments the layer boundaries, coverage invariant, current native tier and the requirements that must be met before any driver advertises mounted write support.