HomeFreeBSD

fusefs: implement protocol 7.23's FUSE_WRITEBACK_CACHE option

Description

fusefs: implement protocol 7.23's FUSE_WRITEBACK_CACHE option

As of protocol 7.23, fuse file systems can specify their cache behavior on a
per-mountpoint basis. If they set FUSE_WRITEBACK_CACHE in
fuse_init_out.flags, then they'll get the writeback cache. If not, then
they'll get the writethrough cache. If they set FOPEN_DIRECT_IO in every
FUSE_OPEN response, then they'll get no cache at all.

The old vfs.fusefs.data_cache_mode sysctl is ignored for servers that use
protocol 7.23 or later. However, it's retained for older servers,
especially for those running in jails that lack access to the new protocol.

This commit also fixes two other minor test bugs:

  • WriteCluster:SetUp was using an uninitialized variable.
  • Read.direct_io_pread wasn't verifying that the cache was actually bypassed.

Sponsored by: The FreeBSD Foundation

Details

Provenance
asomersAuthored on
Parents
rS349430: MFC r343826, r346698, r349057-r349060, r349073-r349077, r349080-r349086…
Branches
Unknown
Tags
Unknown