tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: NFS panic

On Nov 10, 2012, at 12:20 PM, Manuel Bouyer <> 

> On Thu, Nov 08, 2012 at 12:45:55PM +0100, J. Hannken-Illjes wrote:
>> To make it short, Manuels fix was right, me removing it and trying to get it
>> done in vn_lock() is wrong.
>> While vget() vs. cleanvnode() (the cleaner) was always free of races,
>> vget() vs. vrelel() is not.  Manuels fix checking the vnode state when 
>> vrelel()
>> got its vnode lock and before it starts inactivating and cleaning is right.
>> Please try the attached diff that brings back the fix.
> I'm not sure how this would fix it. Although there may also be a race
> bwteen vget() and vrelel(), the race I described is really between
> vget() and cleanvnode() here (more specifically, vget() and vclean(), which is
> used by both cleanvnode() and vrelel()). I can't see how your patch would fix
> this one.

I still don't get it.  If vget() gets preempted after releasing the nodes
interlock this node has already been removed from the freelist so cleanvnode()
cannot take and clean it.

> BTW, in your patch you clear (VI_INACTREDO|VI_INACTNOW), while INACTREDO is
> cleared 2 lines later. You could delete this second line I guess :)

Sure :-)

J. Hannken-Illjes - - TU Braunschweig 

Home | Main Index | Thread Index | Old Index