Actually file subsystem is divided by several general parts:
- VFSv2 service
- set of libraries for each filesystem
In this case we're have the following list:
- libv2 (general library)
- libv2backend (backend to the block device layer)
- libv2pgcache (page cache library)
- libv2ppcall (library serves postponed calls)
For libv2 - there are nothing difference - it will always support everything on logic layer.
I can't see other solutions - our VFS service should be overloaded - and many calls going directly to file system service.
So, while implementation tmpfs and initfs - implementation hasn't any complexities.