Background
Currently blobfs has a memory paging implementation. Implementing paging is relatively complicated and as we move toward write paging support and implementing zx::stream it will only get more complicated. As a result, we want to move as much code as possible into the VFS layer (
//src/lib/storage/vfs/cpp, mostly as PagedVfs and PagedVnode) to be shared between all filesystem implementations.
This project covers the C++ VFS only. We will need a separate implementation for Rust. The biggest part of this project is making blobfs more thread-capable to match the requirements of the new VFS design. It will still be possible for filesystems to bypass this framework (just as they can bypass the whole Vfs layer) if they want.
Current state
The new paging support can be enabled by uncommenting the ENABLE_BLOBFS_NEW_PAGER define near the top of //src/storage/blobfs/BUILD.gn.
The system currently (after
this patch lands) is able to boot and run with this flag, and all blobfs unit tests pass. Several of the integration tests fail, which I believe is due to shutdown handling (tracked in issue
77019).
I'm hoping to get this fixed in the next week or two, at which point we can figure out a rollout plan.
Brett