FreeBSD/src f8ebf1c (r349431)share/man/man5 fusefs.5, sys/fs/fuse fuse_ipc.h fuse_internal.c

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
DeltaFile
+8-61tests/sys/fs/fusefs/write.cc
+18-29tests/sys/fs/fusefs/read.cc
+19-8sys/fs/fuse/fuse_ipc.h
+10-14tests/sys/fs/fusefs/io.cc
+17-1sys/fs/fuse/fuse_internal.c
+1-10tests/sys/fs/fusefs/notify.cc
+2-9tests/sys/fs/fusefs/setattr.cc
+10-0sys/fs/fuse/fuse_node.c
+5-2share/man/man5/fusefs.5
+2-2sys/fs/fuse/fuse_io.c
+92-13610 files

UnifiedSplitRaw