-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Alex Fishman edited this page Sep 13, 2022
·
24 revisions
This page is for providing a guidance for developers who wish to implement a filesystem based on fuse or port an existing one.
In general, the code that worked with osxfuse should work as-is without any changes except linking to a new fuse-t library provided in the installation package.
The installation package copies the following files to your system:
- FUSE include headers in /usr/local/include/fuse
- FUSE dynamic and static library in /usr/local/include/lib: libfuse-t.dylib and libfuse-t.a
- NFS server and support files in /Library/Application Support/fuse-t
Take a look at examples provided by libfuse. It contains samples of working filesystems. In particular take a look at fusexmp_fh which implements a mirror filesystem.
The following mount options are supported at this moment:
- -r: Mount a read-only filesystem. Usage: [exec] -r or [exec] -o,ro
- -volname: Name a volume in Finder. Usage: [exec] -o,volname=somename
- -nonamedattr: Disable named attributes on the mounted volume. Usage: [exec] -o,nonamedattr
Additional options:
- -d: Debug mode. Usage: [exec] -d . The NFS sever will write debug logs to /Application Support/Logs/fuse-t folder
- -l: Set NFS listen address instead of a default one. Usage: [exec] -l 0:1234 . Pay attention that this might expose the NFS server to external connectivity and currently there's no authentication implemented.
Some of the FUSE features are not supported at the moment
- Locks:
Work in progressAll types of file locks (flock, lockf, fcntl) are supported natively by macOS but currently bypassing FUSE calls - Notifications: Work in progress
- IOCTL call
- BMAP call
- FALLOCATE call
- ACCESS and STATFS calls: there's no clear mapping between NFS and FUSE functions, therefore those are uncalled
- A call sequence might look very different from the original osxfuse. It shouldn't cause issues unless the filesystem implementation is buggy.
- READDIR call should return all results in the first pass. This limitation hopefully should be dropped for the next release
- Caching of attributes is done by the NFS client. Currently the caching attributes returned by the filesystem implementation are ignored.
-
How to to uninstall FUSE-T
Run sudo "/Library/Application Support/fuse-t/uninstall.sh" -
What happens after I install it?
Actually not much: it's useless for an end user unless you install another package that depends on it such as SSHFS. FUSE-T package is intended for developers wishing to implements their own FUSE based file system. It provides necessary header files, libraries and the runtime. That's it.