Page MenuHomeFreeBSD

fusefs: fix .. lookups when the parent has been reclaimed.
ClosedPublic

Authored by asomers on Dec 3 2021, 3:34 AM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Oct 30, 5:36 AM
Unknown Object (File)
Wed, Oct 30, 5:36 AM
Unknown Object (File)
Wed, Oct 30, 5:35 AM
Unknown Object (File)
Wed, Oct 30, 5:14 AM
Unknown Object (File)
Oct 2 2024, 7:18 AM
Unknown Object (File)
Sep 24 2024, 12:41 AM
Unknown Object (File)
Sep 8 2024, 3:29 PM
Unknown Object (File)
Sep 5 2024, 4:41 PM
Subscribers

Details

Summary

By default, FUSE file systems are assumed not to support lookups for "."
and "..". They must opt-in to that. To cope with this limitation, the
fusefs kernel module caches every fuse vnode's parent's inode number,
and uses that during VOP_LOOKUP for "..". But if the parent's vnode has
been reclaimed that won't be possible. Previously we paniced in this
situation. Now, we'll return ESTALE instead. Or, if the file system
has opted into ".." lookups, we'll just do that instead.

This commit also fixes VOP_LOOKUP to respect the cache timeout for ".."
lookups, if the FUSE file system specified a finite timeout.

PR: 259974
MFC after: 2 weeks

Test Plan

Tests added

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 43112
Build 40000: arc lint + arc unit