Page MenuHomeFreeBSD

ufs: handle two more cases of possible VNON vnode returned from VFS_VGET().
ClosedPublic

Authored by kib on Dec 3 2020, 2:33 PM.
Tags
None
Referenced Files
Unknown Object (File)
Dec 20 2023, 6:41 AM
Unknown Object (File)
Dec 9 2023, 5:08 AM
Unknown Object (File)
Nov 5 2023, 11:51 PM
Unknown Object (File)
Aug 28 2023, 2:13 PM
Unknown Object (File)
Aug 28 2023, 2:12 PM
Unknown Object (File)
Aug 28 2023, 2:11 PM
Unknown Object (File)
Aug 28 2023, 1:58 PM
Unknown Object (File)
Jun 19 2023, 10:18 AM
Subscribers

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

kib requested review of this revision.Dec 3 2020, 2:33 PM

I have added D27457.80263.diff to another test I'm running on mercat1. Uptime is 16 hours.

I don't think closing these gaps requires a review.

I do think the gaps make it more of a point to introduce some form of vnode transition state tracking where filesystems have to explicitly denote when it got constructed, which would automatically take care of all these problems.

This revision is now accepted and ready to land.Dec 5 2020, 9:11 AM

These updates look needed and correct.

I concur with mjg that it would be helpful to introduce some form of vnode transition state tracking where filesystems have to explicitly denote when it got constructed, which would automatically take care of all these problems. Unfortunately, I do not see an easy way to accomplish this state transition tracking.

In D27457#614233, @pho wrote:

I have added D27457.80263.diff to another test I'm running on mercat1. Uptime is 16 hours.

I completed a full test without seeing any problems.

Consider that i_mode == 0 is already the 'transient' mark. So how VFS could utilize this ?

VFS_VGET() must be able to return such vnodes, because instantiation of newly allocated inode works this way. With that change to vput(), I do not see how could this be handled otherwise, without introducing even more boilerplate code in unrelated places.