Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2009 at 11:26:21PM +0300, Antti Kantee wrote: > On Tue Sep 22 2009 at 21:58:02 +0200, Manuel Bouyer wrote: > > [explanations] > > This is starting to sound sensible now. You obviously have invested > quite a bit of thought in investigating the problem. Yes, it was annoying enough

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Antti Kantee
On Tue Sep 22 2009 at 21:58:02 +0200, Manuel Bouyer wrote: > [explanations] This is starting to sound sensible now. You obviously have invested quite a bit of thought in investigating the problem. > > Blah, I didn't even want to think about this migrane-inducer now. > > Maybe people who have rec

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2009 at 10:42:59PM +0300, Antti Kantee wrote: > On Tue Sep 22 2009 at 21:04:14 +0200, Manuel Bouyer wrote: > > that's not an issue with the reference count. It's an issue with vclean() > > calling VOP_RECLAIM() even if the refcount is greater than 1, and > > vrelel() calling vclean(

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Antti Kantee
On Tue Sep 22 2009 at 21:04:14 +0200, Manuel Bouyer wrote: > that's not an issue with the reference count. It's an issue with vclean() > calling VOP_RECLAIM() even if the refcount is greater than 1, and > vrelel() calling vclean() even if the refcount is greater than 1, > when the file has been unl

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2009 at 09:51:13PM +0300, Antti Kantee wrote: > > >From what I understand the vnode is not on the free list yet so it can't > > be reused for something else. > > For which one? ;) > > No, when the reference count (and hold count) goes to zero, the vnode > goes onto the freelist.

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Antti Kantee
On Tue Sep 22 2009 at 20:34:50 +0200, Manuel Bouyer wrote: > > > It depends on what you mean with "race-free". If you mean that the > > > vnode returned by vget() can't be recygled, I think this is true. > > > If you mean that vget() can't return a clean vnode then this is false: > > > vget() can s

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Manuel Bouyer
On Tue, Sep 22, 2009 at 09:23:05PM +0300, Antti Kantee wrote: > On Tue Sep 22 2009 at 20:06:40 +0200, Manuel Bouyer wrote: > > On Sun, Sep 20, 2009 at 08:23:38PM +0300, Antti Kantee wrote: > > > > In ufs_ihashget(), vget() can return a vnode that has been vclean'ed > > > > because > > > > vget() c

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Antti Kantee
On Tue Sep 22 2009 at 20:06:40 +0200, Manuel Bouyer wrote: > On Sun, Sep 20, 2009 at 08:23:38PM +0300, Antti Kantee wrote: > > > In ufs_ihashget(), vget() can return a vnode that has been vclean'ed > > > because > > > vget() can sleep. After vget returns, check that vp is still connected > > > wi

Re: CVS commit: src/sys/ufs/ufs

2009-09-22 Thread Manuel Bouyer
On Sun, Sep 20, 2009 at 08:23:38PM +0300, Antti Kantee wrote: > > In ufs_ihashget(), vget() can return a vnode that has been vclean'ed because > > vget() can sleep. After vget returns, check that vp is still connected with > > ip, and that ip still points to the inode we want. This fix the NULL > >