Create base architecture with metadata support
The base architecture supports independent Fuse clients that connect to the OpenIO interface. They are unaware of each other and do not communicate. Each has its own metadata and data caches.
Create:
-
Check OpenIO first. If succeeds add metadata to rocksdb. -
Empty object with metadata.
Stat:
-
Check if exists in OpenIO and sync metadata with rocksdb. -
Add NFS semantics. If within X second time frame do not look into OpenIO and just into cache. -
At the very least we always need some small time frame to combat multiple Fuse calls not calling OpenIO all the time.
-
Remove:
-
Remove in OpenIO first and then in rocksdb
Init:
-
Sync Container information to rocksdb
Metadata:
- Dentries: Key:
d_<inode_no>_filename
; Val:<inode_no>
of leaf - Inodes: Key:
i_<inode_no>
; Val:{c,f,d};<comma_separated_mdata
; Container, file, or directory. Directories are virtual special files for the file system but for OpenIO it is all in the same namespace (container) anyways
Depends on: https://gitlab.rlp.net/resteine/openio-fuse/issues/2
Edited by Vef, Marc-André