https://github.com/4ldo2/fal-rs
Filesystem abstraction layer
https://github.com/4ldo2/fal-rs
abstraction-layer apfs apfs-fuse btrfs ext2 ext2fs filesystem filesystem-api filesystem-library fuse fuse-filesystem redox redox-os rust xfs
Last synced: 3 months ago
JSON representation
Filesystem abstraction layer
- Host: GitHub
- URL: https://github.com/4ldo2/fal-rs
- Owner: 4lDO2
- License: apache-2.0
- Created: 2019-09-15T00:43:48.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-06-17T01:31:41.000Z (about 3 years ago)
- Last Synced: 2023-03-04T09:39:25.828Z (over 2 years ago)
- Topics: abstraction-layer, apfs, apfs-fuse, btrfs, ext2, ext2fs, filesystem, filesystem-api, filesystem-library, fuse, fuse-filesystem, redox, redox-os, rust, xfs
- Language: Rust
- Homepage:
- Size: 572 KB
- Stars: 11
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# fal-rs, a filesystem abstraction layer
Allows backends (like ext2, apfs, btrfs, xfs etc.) to communicate with the frontends (currently including only FUSE and Redox), by implementing the `Filesystem` and `FilesystemMut` traits.
# Features implemented
## Backends
- ext2/ext3/ext4: Read-only (+writing metadata, but I haven't checked if this actually works in a while). Ext2 filesystems can be read in quite an error-free way, whereas ext4 should be _mostly_ working.
- apfs: Read-only (everything isn't implemented to fully cover the limited spec provided by Apple, however reading files and listing directories is implemented)
- btrfs: WIP (reading B-trees is implemented, and probably error-free)
- xfs: TODO
- f2fs: TODO## Frontends
- FUSE: Read-only access to files and directories, including metadata.
- Redox: Same as FUSE.
- Linux kernel modules: TODO
- macOS kexts: TODO# TODO
- [ ] Create/use a proper parsing library. `scroll` is currently used in `fal-backend-ext4`, but some structs need manual parsing.
- [ ] Optimizations
- [ ] Testing, which requires either storing binary fs images in the repo, or depending on the system's mkfs. There is a limited test suite, but it has to be expanded and improved.## License
Licensed under either of
* Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.