fusefs: only test for incoherency if FN_SIZECHANGE is set

FUSE emits spurious incoherency warnings in writethrough mode. The
warnings are triggered by setattr calls generated by vnode truncation
turning the cached va_size vattr stale, causing comparisons with the
fresh version provided by the server to fail. Only validate the vnode's
va_size vattr if the FN_SIZECHANGE flag is set.

This is a part of the research work at RCSLab, University of Waterloo.

Reviewed by:	asomers
MFC after:	1 week
Pull Request:	https://github.com/freebsd/freebsd-src/pull/1110
This commit is contained in:
Emil Tsalapatis 2024-02-07 20:13:43 -05:00 committed by Alan Somers
parent 15cb9c0d9f
commit 8758bf0aae

View file

@ -269,10 +269,10 @@ fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr,
if (vnode_isreg(vp) &&
fvdat->cached_attrs.va_size != VNOVAL &&
fvdat->flag & FN_SIZECHANGE &&
attr->size != fvdat->cached_attrs.va_size)
{
if ( data->cache_mode == FUSE_CACHE_WB &&
fvdat->flag & FN_SIZECHANGE)
if (data->cache_mode == FUSE_CACHE_WB)
{
const char *msg;