fuse_internal_cache_attrs() requires an exclusive vnode lock
(ASSERT_VOP_ELOCKED), but fuse_internal_do_getattr() can be called
with only a shared lock from the read path:
fuse_read_biobackend() [LK_SHARED]
=> fuse_vnode_size()
-> fuse_internal_do_getattr()
=> fuse_internal_cache_attrs() [needs LK_EXCLUSIVE]This caused lock assertion panics during read operations.