fusefs: merge from projects/fuse2
This commit imports the new fusefs driver. It raises the protocol level
from 7.8 to 7.23, fixes many bugs, adds a test suite for the driver, and
adds many new features. New features include:
- Optional kernel-side permissions checks (-o default_permissions)
- Implement VOP_MKNOD, VOP_BMAP, and VOP_ADVLOCK
- Allow interrupting FUSE operations
- Support named pipes and unix-domain sockets in fusefs file systems
- Forward UTIME_NOW during utimensat(2) to the daemon
- kqueue support for /dev/fuse
- Allow updating mounts with "mount -u"
- Allow exporting fusefs file systems over NFS
- Server-initiated invalidation of the name cache or data cache
- Respect RLIMIT_FSIZE
- Try to support servers as old as protocol 7.4
Performance enhancements include:
- Implement FUSE's FOPEN_KEEP_CACHE and FUSE_ASYNC_READ flags
- Cache file attributes
- Cache lookup entries, both positive and negative
- Server-selectable cache modes: writethrough, writeback, or uncached
- Write clustering
- Readahead
- Use counter(9) for statistical reporting
PR: 199934 216391 233783 234581 235773 235774 235775
PR: 236226 236231 236236 236291 236329 236381 236405
PR: 236327 236466 236472 236473 236474 236530 236557
PR: 236560 236844 237052 237181 237588 238565