HomeFreeBSD

fusefs: rewrite vop_getpages and vop_putpages

Description

fusefs: rewrite vop_getpages and vop_putpages

Use the standard facilities for getpages and putpages instead of bespoke
implementations that don't work well with the writeback cache. This has
several corollaries:

  • Change the way we handle short reads _again_. vfs_bio_getpages doesn't provide any way to handle unexpected short reads. Plus, I found some more lock-order problems. So now when the short read is detected we'll just clear the vnode's attribute cache, forcing the file size to be requeried the next time it's needed. VOP_GETPAGES doesn't have any way to indicate a short read to the "caller", so we just bzero the rest of the page whenever a short read happens.
  • Change the way we decide when to set the FUSE_WRITE_CACHE bit. We now set it for clustered writes even when the writeback cache is not in use.

Sponsored by: The FreeBSD Foundation

Details

Provenance
asomersAuthored on Jun 25 2019, 5:24 PM
Parents
rG48417ae0ba1b: fusefs: fix multiple issues with the io tests
Branches
Unknown
Tags
Unknown