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
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
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(
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
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.
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
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
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
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
> >