Finish porting FUSE to FreeBSD
FreeBSD fuse kernel module was developed during Google Summer of Code 2005. Sadly it is not actively maintained since February 2007. Since than two forks of FreeBSD version where created: macfuse for Mac OS X and OpenSolaris fork. Nowadays fuse is not only actively used by desktop applications there are production quality server file systems built on top of fuse.
Deliverables
- Updated fuse port with stability improvements
- New fuse file systems
- Fusefs regression test suite, formal results of tests with tools listed below
- Wiki page with relevant FUSE status
Testing tools
- fsx: io and mmap correctness tests
- pjdfstest, tmpfs tests: conformance to standards, stability tests
- blogbench and dbench: stress, stability and performance tests
File systems for testing
- ntfs-3g: known to have locking issues on FreeBSD
- sshfs: reported to incorrectly handle inode numbers, network file system
- glusterfs: production grade distributed file system, no FreeBSD port
- ext2-fuse: can be used for testing, reuses source code from linux kernel, no FreeBSD port. (secondary importance)
- smbnetfs: important because kernel level smbfs is not actively maintained and giant locked. (secondary importance)
Milestones
Weeks 1-3: Move to macfuse code base. Extensively test individual changes.
Weeks 4-7: Check and if necessary fix architectural issues documented in fuse-kmod: attribute and name cache, large file support, missing inode numbers, fix /dev/fuse cloning/creation, etc.
Week 8-9: Reproduce and fix bugs known for actively used file systems.
Week 10-11: Test network file systems mentioned above: sshfs, smbnetfs, glusterfs. Port gluster, unofficial port for older release exists.
Week 12-13: Test rest of fusefs ports or use time to finish incomplete tasks.