Releases: scality/elmerfs
Update template example to include new parameter.
0.5.1-alpha Add poll_threads to template.
Multithreaded Polling
The single threaded handling of FUSE message was becoming a bottleneck in the experiments. This forked the fuse library to add a rough multithreading support and this update Elmer to use this instead:
- Use the tokio runtime for better debugging.
- Use tonic for grpc
- Forks fuser to add multithreading a more capabilities wrt FUSE.
- Use rayon to reply to FUSE in a thread pool without blocking async threads.
- Optimize lookups a bit: Do not bother deserializing the directory for just one lookup. May be revisited if we add get_and_validate support.
File caching and async writes
This release adds a configuration file to tweak the various file system parameters. Among other things:
- Ino generation is sharded, no locking is needed anymore.
- File read and write are cached.
Write Gathering
Includes:
- Write gathering
- Back-off and retries for transient errors.
0.2.1-alpha
Synchronously delete inodes: in the same transaction as their unlink operation (rmdir/unlink).
Full link tracking
This release add the correct tracking of links for an inode.
Meaning that concurrent divergent renames are possible.
First steps
This is an initial release.
The project is still lacking a lot, but the current state is somewhat working and the architecture is stable.
This includes the following but not exhaustive features:
-
All common fs operations are implemented: mkdir, mknod, rename, link, unlink, setattr, getattr, read/write, open/close[dir], readdir...
-
Handling of naming conflict: This leverage the view id, which comes from the user id. ElmerFS is capable of handling name conflict inside a directory by showing the two version, expecting the user to decide what to do with them
-
Thread per core model: All FUSE tasks are handled asynchronously, with one executor per core.
-
Sparse file: This is the only file type supported at the moment, sparse file are a infinite stream of page of a fixed size. Conflict resolution happens at the page boundaries.
-
Strong Eventual Consistency: Using only CRDTs, ElmerFS is capable of handling crashes or complete network isolation and still comes back on its feet later on. It works only on its local view, CRDT semantics handle the convergence between nodes and cluster through AntidoteDB.