FUSE 3 driver for the PartFS filesystem.
PartFS is a custom filesystem with extent-based file storage, per-group inode B-trees, FNV-1a directory hashing, CRC32C checksums on all metadata, and a write-ahead journal.
- Read and write: regular files, directories, symbolic links, hard links
- Extent-based storage — up to 4 inline extents per inode
- Inode B-tree with recursive leaf and internal node splitting
- Directory B-tree keyed by FNV-1a 64-bit filename hash
- CRC32C (Castagnoli) checksums on every metadata block
- Inline extended attributes stored in the inode tail
IFLAG_IMMUTABLEandIFLAG_APPENDflag enforcement- Clean flag, mount count, and journal state management
- Journal replay on unclean mount (WAL, commit-block delimited)
- Full POSIX permission model:
chmod,chown, setuid/setgid/sticky bits
libfuse3(FUSE 3.x)- GCC with C11 support
# Arch Linux
pacman -S fuse3
# Debian / Ubuntu
apt install libfuse3-devmakeProduces:
libpartfs.so— shared library with the full driver implementationpartfs— thin executable that loadslibpartfs.soand callsfuse_main
To install system-wide:
sudo make install| Document | Description |
|---|---|
| docs/api.md | Complete library API reference |
| docs/architecture.md | Project structure and layer design |
| docs/on-disk-format.md | On-disk format reference |
| docs/internals.md | Module-by-module internals |
| docs/xattr.md | Extended attributes implementation |
| docs/usage.md | Mount options and usage examples |
| docs/building.md | Build and install instructions |
- Maximum 4 extents per inode (returns
ENOSPCwhen exceeded) - Inline xattr space is limited by the 64-byte inode tail
- Only group 0's inode B-tree is used; per-group trees are not yet created
- Driver-side journalling not yet implemented (replay is implemented)
GNU General Public License v2.0 only. See LICENSE.
AnmiTaliDev [email protected]