|
1 | 1 | # BFCFS - BFC Kernel Filesystem Driver |
2 | 2 |
|
| 3 | +[/badge.svg)](https://github.com/zombocoder/bfcfs/actions) |
| 4 | +[](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) |
| 5 | +[](https://kernel.org/) |
| 6 | +[](#current-status-phase-0-mvp) |
| 7 | + |
3 | 8 | A native Linux kernel filesystem driver for mounting BFC (Binary File Container) images directly without FUSE. |
4 | 9 |
|
5 | | -## Current Status: Phase 0 MVP |
| 10 | +## Features |
| 11 | + |
| 12 | +- 🚀 **Native Performance**: Direct kernel integration, no FUSE overhead |
| 13 | +- 📁 **Full Directory Support**: Complete directory tree navigation and listing |
| 14 | +- 📄 **File Reading**: Accurate and complete file content access |
| 15 | +- 🔒 **Memory Safe**: Proper VFS integration with clean resource management |
| 16 | +- ⚡ **Direct I/O**: Efficient file reading bypassing page cache complications |
| 17 | +- 🛡️ **Crash-Free**: Stable mount/unmount operations without kernel crashes |
| 18 | +- 🔧 **Standard Tools**: Works with all standard Linux file utilities (`ls`, `cat`, `cp`, etc.) |
| 19 | + |
| 20 | +## Current Status: Phase 0 MVP - ✅ **STABLE** |
6 | 21 |
|
7 | | -- ✅ **Module Loading**: Loads and registers as kernel filesystem |
8 | | -- ✅ **Basic Infrastructure**: Mount parsing, index loading, VFS integration |
9 | | -- ✅ **Uncompressed Files**: Can read plain (uncompressed, unencrypted) files |
| 22 | +The BFCFS kernel module is now fully functional for basic BFC container operations: |
| 23 | + |
| 24 | +- ✅ **Module Loading/Unloading**: Clean insertion and removal from kernel |
| 25 | +- ✅ **Mount/Unmount Operations**: Proper VFS integration without crashes |
| 26 | +- ✅ **Directory Operations**: Full directory listing and navigation |
| 27 | +- ✅ **File Reading**: Complete and accurate file content access |
| 28 | +- ✅ **Uncompressed Files**: Full support for plain (uncompressed, unencrypted) files |
| 29 | +- ✅ **VFS Integration**: Proper inode allocation and memory management |
10 | 30 | - 🚧 **Compression**: Zstd support planned (Phase 0.2) |
11 | 31 | - 🚧 **Encryption**: AEAD encryption planned (Phase 0.3) |
12 | 32 |
|
@@ -50,6 +70,26 @@ sudo make install |
50 | 70 |
|
51 | 71 | ## Usage |
52 | 72 |
|
| 73 | +### Quick Start Example |
| 74 | + |
| 75 | +```bash |
| 76 | +# Load the module |
| 77 | +sudo insmod bfcfs.ko |
| 78 | + |
| 79 | +# Mount a BFC container |
| 80 | +sudo mount -t bfcfs -o source=/path/to/container.bfc none /mnt/bfc |
| 81 | + |
| 82 | +# Browse contents |
| 83 | +ls -la /mnt/bfc/ |
| 84 | +cat /mnt/bfc/some-file.txt |
| 85 | + |
| 86 | +# Unmount cleanly |
| 87 | +sudo umount /mnt/bfc |
| 88 | + |
| 89 | +# Unload module |
| 90 | +sudo rmmod bfcfs |
| 91 | +``` |
| 92 | + |
53 | 93 | ### Basic Mount (uncompressed containers only) |
54 | 94 |
|
55 | 95 | ```bash |
@@ -186,13 +226,17 @@ bfc create -c zstd test.bfc /path/to/source/ |
186 | 226 |
|
187 | 227 | ## Implementation Phases |
188 | 228 |
|
189 | | -### Phase 0: Foundation (✅ Complete) |
| 229 | +### Phase 0: Foundation (✅ **COMPLETED**) |
190 | 230 |
|
191 | 231 | - [x] Module infrastructure and VFS registration |
192 | | -- [x] Mount option parsing |
193 | | -- [x] BFC index parsing and validation |
194 | | -- [x] Basic file and directory operations |
| 232 | +- [x] Mount option parsing and validation |
| 233 | +- [x] BFC container format parsing and index loading |
| 234 | +- [x] Proper VFS inode allocation and memory management |
| 235 | +- [x] Directory operations (listing, lookup, navigation) |
| 236 | +- [x] File reading operations with direct I/O |
| 237 | +- [x] Clean mount/unmount without kernel crashes |
195 | 238 | - [x] Support for uncompressed, unencrypted files |
| 239 | +- [x] Synthetic root directory handling |
196 | 240 |
|
197 | 241 | ### Phase 0.2: Compression Support (🚧 Planned) |
198 | 242 |
|
|
0 commit comments