Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tfg13/sdi4fs
A simple, (mostly) log-structured file system
https://github.com/tfg13/sdi4fs
Last synced: about 5 hours ago
JSON representation
A simple, (mostly) log-structured file system
- Host: GitHub
- URL: https://github.com/tfg13/sdi4fs
- Owner: tfg13
- License: apache-2.0
- Created: 2016-04-09T20:16:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-11-21T12:45:57.000Z (almost 8 years ago)
- Last Synced: 2023-03-11T19:02:56.508Z (over 1 year ago)
- Language: C++
- Size: 54.7 KB
- Stars: 7
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# sdi4fs
A simple, (mostly) log-structured file systemsdi4fs was written in 2015 for a university project.
The primary target was to design and implement a flash-friendly file system that runs as a userspace driver server for systems based on [L4Re](https://os.inf.tu-dresden.de/L4Re/) and the [FIASCO.OC](https://os.inf.tu-dresden.de/L4Re/fiasco/) microkernel.## Design
* Mostly log-structured for flash-friendliness (for devices with a basic flash translation layer (FTL), like SD cards)
* Fast mounting via snapshots (after correct unmount)
* Automatic block map reconstruction if snapshot is missing
* Full POSIX-like support for files, directories and hardlinks
* Reasonable size limits:
* 16TiB max fs size
* 4GiB max file size
* 129413 hardlinks per directory (>2x ext4!)
See [sdi4fs_spec](https://github.com/tfg13/sdi4fs/blob/master/sdi4fs_spec) for details.## Scope & Linux support
This repository contains everything I wrote and was able to trivially
release as FOSS. The full system also featured an SD card driver,
a block device server, a stream-like IPC mechanism and an L4Re compatible
frontend server for the file system.This repository contains the full fs code without any L4 dependencies,
which allows for compiling and running sdi4fs on Linux without any modifications.Since sdi4fs was designed to be accessed through a server on the mircokernel system,
this repository only contains "libsdi4fs" - the file system itself without any frontend.
To use sdi4fs on Linux, one needs to `#include FS.h` and use the API directly.
In absence of the original SD card driver, sdi4fs can use a regular file as device.
See [linux_main.cc](https://github.com/tfg13/sdi4fs/blob/master/linux_main.cc) as an example.## Code & Compiling
Written in C++, mostly conforms to the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html).
Running `make` should work on any half-modern Linux machine with support for C++11.## License
Apache 2.0, see [LICENSE](https://github.com/tfg13/sdi4fs/blob/master/LICENSE)