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
F84772822: D33239.diff
Tue, May 28, 10:37 AM
Unknown Object (File)
Wed, May 15, 12:19 PM
Unknown Object (File)
Wed, May 8, 5:52 AM
Unknown Object (File)
Wed, May 8, 5:52 AM
Unknown Object (File)
Wed, May 8, 5:52 AM
Unknown Object (File)
Wed, May 8, 2:22 AM
Unknown Object (File)
Tue, Apr 30, 11:55 AM
Unknown Object (File)
Apr 8 2024, 11:34 AM
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
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable