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.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; 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.