HomeFreeBSD

fusefs: require FUSE_NO_OPENDIR_SUPPORT for NFS exporting

Description

fusefs: require FUSE_NO_OPENDIR_SUPPORT for NFS exporting

FUSE file systems that do not set FUSE_NO_OPENDIR_SUPPORT do not
guarantee that d_off will be valid after closing and reopening a
directory. That conflicts with NFS's statelessness, that results in
unresolvable bugs when NFS reads large directories, if:

  • The file system _does_ change the d_off field for the last directory entry previously returned by VOP_READDIR, or
  • The file system deletes the last directory entry previously seen by NFS.

Rather than doing a poor job of exporting such file systems, it's better
just to refuse.

Even though this is technically a breaking change, 13.0-RELEASE's
NFS-FUSE support was bad enough that an MFC should be allowed.

MFC after: 3 weeks.
Reviewed by: rmacklem
Differential Revision: https://reviews.freebsd.org/D33726

Details

Provenance
asomersAuthored on Jan 3 2022, 12:16 AM
Reviewer
rmacklem
Differential Revision
D33726: fusefs: fix VOP_READDIR problems for NFS-exported FUSE file systems
Parents
rG4a6526d84a56: fusefs: optimize NFS readdir for FUSE_NO_OPENDIR_SUPPORT
Branches
Unknown
Tags
Unknown