Explore the feasibility of using a custom FileSystemProvider to expose deduplicated game versions as read-only filesystems.
The goal would be to let multiple game versions share a common blob store (content-addressed storage), allowing the JVM and related tools to interact with each version’s files through standard NIO APIs without requiring duplicate installations of the game on disk.
Key points to investigate:
- How feasible it is to replace or augment
FileSystems.getDefault() for seamless integration.
- Performance and memory implications of mapping thousands of files virtually.
- Limitations when interacting with native libraries (
System.load, etc.)
- Compare the feasibility between a pure java
FileSystemProvider, FUSE based mount, and symlink approaches.
- Pros and cons of a read-only design (throwing
ReadOnlyFileSystemException when a deduplicated file is modified) versus a copy-on-write system, where modified files are copied where the default file system expects it to be, and future reads reference the new version instead of the blob store.
Explore the feasibility of using a custom
FileSystemProviderto expose deduplicated game versions as read-only filesystems.The goal would be to let multiple game versions share a common blob store (content-addressed storage), allowing the JVM and related tools to interact with each version’s files through standard NIO APIs without requiring duplicate installations of the game on disk.
Key points to investigate:
FileSystems.getDefault()for seamless integration.System.load, etc.)FileSystemProvider, FUSE based mount, and symlink approaches.ReadOnlyFileSystemExceptionwhen a deduplicated file is modified) versus a copy-on-write system, where modified files are copied where the default file system expects it to be, and future reads reference the new version instead of the blob store.