git: 61ddfc0e55b4 - stable/14 - fusefs: only test for incoherency if FN_SIZECHANGE is set
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 21 Apr 2024 14:10:19 UTC
The branch stable/14 has been updated by asomers:
URL: https://cgit.FreeBSD.org/src/commit/?id=61ddfc0e55b4fcdf4fd07a9764404760eecf2419
commit 61ddfc0e55b4fcdf4fd07a9764404760eecf2419
Author: Emil Tsalapatis <emil@etsalapatis.com>
AuthorDate: 2024-02-08 01:13:43 +0000
Commit: Alan Somers <asomers@FreeBSD.org>
CommitDate: 2024-04-21 14:09:43 +0000
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
Pull Request: https://github.com/freebsd/freebsd-src/pull/1110
(cherry picked from commit 8758bf0aaec1d4b2ebcb429e8cabc691c2c95461)
---
sys/fs/fuse/fuse_internal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c
index 2d1c729a395a..30e3cebfa500 100644
--- a/sys/fs/fuse/fuse_internal.c
+++ b/sys/fs/fuse/fuse_internal.c
@@ -270,10 +270,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;