fusefs: WIP fixing writeback cacheing
The current "writeback" cache mode, selected by the
vfs.fusefs.data_cache_mode sysctl, doesn't do writeback cacheing at all. It
merely goes through the motions of using buf(9), but then writes every
buffer synchronously. This commit:
- Enables delayed writes when the sysctl is set to writeback cacheing
- Fixes a cache-coherency problem when extending a file whose last page has just been written.
- Removes the "sync" mount option, which had been set unconditionally.
- Adjusts some SDT probes
- Adds several new tests that mimic what fsx does but with more control and without a real file system. As I discover failures with fsx, I add regression tests to this file.
- Adds a test that ensures we can append to a file without reading any data from it.
This change is still incomplete. Clustered writing is not yet supported,
and there are frequent "panic: vm_fault_hold: fault on nofault entry" panics
that I need to fix.
Sponsored by: The FreeBSD Foundation