https://github.com/horazont/dragonstash
A transparent block-wise file system cache overlay with libfuse3, written in C++.
https://github.com/horazont/dragonstash
cache cpp fuse-filesystem sftp-client
Last synced: about 1 year ago
JSON representation
A transparent block-wise file system cache overlay with libfuse3, written in C++.
- Host: GitHub
- URL: https://github.com/horazont/dragonstash
- Owner: horazont
- License: gpl-3.0
- Created: 2019-11-04T17:23:34.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-11-25T14:06:00.000Z (over 6 years ago)
- Last Synced: 2025-02-10T12:16:10.027Z (over 1 year ago)
- Topics: cache, cpp, fuse-filesystem, sftp-client
- Language: C++
- Homepage:
- Size: 391 KB
- Stars: 1
- Watchers: 4
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
README
# DragonStash -- a Caching FUSE Overlay File System
[](https://travis-ci.com/horazont/dragonstash)
`DragonStash` is a FUSE file system which implements a *transparent cache*
over any other mounted file system or SFTP server. It helps you produce a
Dragon’s stash of the finest media (or whatever is available at the source
you’re using), automatically.
## Roadmap
`DragonStash` is in development. This means that a lot of things don’t work
yet. Here’s the roadmap and the current status.
### Done
* Transparent caching of inodes (directories, symlinks, file metadata).
* Local directory tree as source file system
* EIO on missing (meta-)data
### To be done
Everything, literally. But more specifically:
* Transparent block-wise caching of file contents
* SFTP server as source file system
* Limit number of blocks and inodes in the cache
* Evict unused blocks when limit is reached
* Understand fallocate to discard cached data
* Proper command-line interface and utility for:
- mounting and unmounting
- pinning file content, configuring readahead etc.
* Online write support
* Offline write support
* Online locking support
* (Unsafe) offline locking support
* More advanced readahead/pre-caching algorithms
### Out of scope
* Sockets, devices, fifos
## Huh? Wasn't this in golang once?
[Yes](https://github.com/horazont/dragonstash-golang). I got annoyed over
golang too much to continue it there. So I ported it to a saner language
(C++).
(Yes, I am a bit provocative about the above statement. In the end, it is
about a matter of taste.)