Page MenuHomeFreeBSD

FUSE: Refresh cached file size when it changes (lookup)
AbandonedPublic

Authored by cem on Feb 12 2019, 9:43 AM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 19 2024, 10:08 PM
Unknown Object (File)
Feb 10 2024, 9:36 PM
Unknown Object (File)
Dec 20 2023, 3:22 AM
Unknown Object (File)
Aug 11 2023, 3:15 AM
Unknown Object (File)
Jul 15 2023, 7:53 PM
Unknown Object (File)
Jul 15 2023, 8:28 AM
Unknown Object (File)
Jun 27 2023, 10:19 PM
Unknown Object (File)
May 18 2023, 9:32 PM

Details

Reviewers
None
Summary

The cached fvdat->filesize is indepedent of the (mostly unused)
cached_attrs, and we failed to update it when a cached (but perhaps
inactive) vnode was found during VOP_LOOKUP to have a different size than
cached.

As noted in the code comment, this can occur in distributed filesystems or
with other kinds of irregular file behavior (anything is possible in FUSE).

We do something similar in fuse_vnop_getattr already.

PR: 230258
Reported by: MooseFS FreeBSD Team <freebsd AT moosefs.com>
Submitted by: Jakub Kruszona-Zawadzki <acid AT moosefs.com> (earlier version)
Tested by: anonymous, Jakub Kruszona-Zawadzki, Ben RUBSON (in various versions)

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 22462
Build 21617: arc lint + arc unit