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)
Sat, Dec 14, 1:43 PM
Unknown Object (File)
Mon, Dec 9, 5:59 AM
Unknown Object (File)
Thu, Nov 28, 8:54 PM
Unknown Object (File)
Nov 16 2024, 9:21 AM
Unknown Object (File)
Nov 15 2024, 6:56 PM
Unknown Object (File)
Nov 15 2024, 4:37 PM
Unknown Object (File)
Oct 30 2024, 5:36 AM
Unknown Object (File)
Oct 30 2024, 5:36 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