diff options
| author | Emil Tsalapatis <emil@etsalapatis.com> | 2024-02-08 01:13:43 +0000 |
|---|---|---|
| committer | Alan Somers <asomers@FreeBSD.org> | 2024-02-09 03:13:24 +0000 |
| commit | 8758bf0aaec1d4b2ebcb429e8cabc691c2c95461 (patch) | |
| tree | e27d6eea02386f9b4874d6a66fe112a5a881c964 | |
| parent | 15cb9c0d9f0a1ecf2cf26968c42e6212ccce8c26 (diff) | |
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
| -rw-r--r-- | sys/fs/fuse/fuse_internal.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c index ffbf1f9bcc40..29d88fc942f4 100644 --- a/sys/fs/fuse/fuse_internal.c +++ b/sys/fs/fuse/fuse_internal.c @@ -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; |
