We recently implemented an abstraction of the file system operations WiredTiger uses. A complexity in the API is that there are a few cases in WiredTiger where we use streaming functionality.
That functionality is implemented via two methods in the filesystem API:
WT_FH::fh_getc WT_FH::fh_printf
They also require a set of flags to WT_CONNECTION_IMPL::handle_open, which are WT_STREAM_APPEND | WT_STREAM_READ | WT_STREAM_WRITE. It would be nice to add implementations of the functionality above the file-system API layer. Doing so serves three purposes:
- Reduce complexity of file system API.
- Reduce complexity inside file open/close
- Remove some redundant code across different file system implementations.