Page MenuHomeFreeBSD

fusefs: merge from projects/fuse2
AbandonedPublic

Authored by asomers on Jun 29 2019, 7:20 PM.

Details

Reviewers
cem
ngie
manu
cy
scottl
Group Reviewers
manpages
bhyve
Summary

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 235775
PR: 236226 236231 236236 236291 236329 236379 236381 236405
PR: 236327 236466 236472 236473 236474 236530 236557 236560
PR: 236647 236844 237052 237181 237588 238565

Test Plan

Unit tests added. Additional testing with fsx and pjdfstest.

Diff Detail

Repository
rS FreeBSD src repository
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 25125
Build 23823: arc lint + arc unit

Event Timeline

asomers created this revision.Jun 29 2019, 7:20 PM

Grr, Phabricator seems to ignore newly added files underneath a newly added directory. There's actually a lot of stuff in tests/sys/fs/fusefs

jhb added a subscriber: jhb.Jul 10 2019, 6:41 PM

The random non-changes to files in bhyve, etc. is odd. I think this comes from using svn merge which I think is usually a bad idea for non-MFC's as it often screws up.

One thing that struck me when watching the commits go by in the projects branch is it seemed like the commits to that branch were good piecemeal commits to make to head (e.g. each minor protocol bump) so that people would be able to bisect between those changes for future debugging. It's also a really large change to review all at once.

Yeah, I need to svn revert the useless mergeinfo. As for a single massive merge versus many tiny ones, I think it's better to do the large merge. Because even though the branch's history appears very incremental, there are also a lot of bugs in that history. I can't easily separate the sequentially added features without introducing bugs in intermediate revisions.

asomers abandoned this revision.Jul 12 2019, 8:19 PM

Abandoning in favor of D20940 , which omits the useless mergeinfo.