Page MenuHomeFreeBSD

fusefs: fix two bugs regarding VOP_RECLAIM of the root inode
ClosedPublic

Authored by asomers on Apr 2 2022, 7:43 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Dec 10, 1:33 AM
Unknown Object (File)
Sun, Dec 1, 2:01 PM
Unknown Object (File)
Wed, Nov 27, 11:48 AM
Unknown Object (File)
Tue, Nov 26, 9:11 PM
Unknown Object (File)
Sun, Nov 24, 5:19 PM
Unknown Object (File)
Fri, Nov 22, 11:48 PM
Unknown Object (File)
Nov 22 2024, 10:37 AM
Unknown Object (File)
Nov 18 2024, 8:20 AM
Subscribers

Details

Summary
  • We never send FUSE_LOOKUP for the root inode, since its inode number is hard-coded to 1. Therefore, we should not send FUSE_FORGET for it, lest the server see its lookup count fall below 0.
  • During VOP_RECLAIM, if we are reclaiming the root inode, we must clear the file system's vroot pointer. Otherwise it will be left pointing at a reclaimed vnode, which will cause future VOP_LOOKUP operations to fail. Previously we only cleared that pointer during VFS_UMOUNT. I don't know of any real-world way to trigger this bug.

MFC after: 2 weeks

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Release root inode even if the server is already detached

This revision is now accepted and ready to land.Apr 4 2022, 3:29 AM