Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Mar 2005 02:31:04 +0000
From:      Ian Dowse <iedowse@maths.tcd.ie>
To:        Jeff Roberson <jroberson@chesapeake.net>
Cc:        pete@isilon.com
Subject:   Re: Cleaning up vgone. 
Message-ID:  <200503110231.aa37257@salmon.maths.tcd.ie>
In-Reply-To: Your message of "Thu, 10 Mar 2005 06:21:04 EST." <20050310061419.Y20708@mail.chesapeake.net> 

index | next in thread | previous in thread | raw e-mail

In message <20050310061419.Y20708@mail.chesapeake.net>, Jeff Roberson writes:

[Good info about shared lock filesystems and VI_DOOMED snipped]

>I'd much rather get rid of DOINGINACT and simply vhold the vnode so it
>doesn't have a 0 ref count.  It seems more natural to me to use a
>reference than special case another flag.  I like the idea of the patch
>below, but it conflicts with the patch I just posted as I removed the
>DOINGINACT check from VSHOULDFREE.

Yes, I'm all for a cleaner way of doing this too. Many of the reasons
for DOINGINACT will become unnecessary with your changes anyway,
such as the code in nfs_inactive() that used to have to worry about
the vnode going away while it did the sillyrename I/O.

The only advantage I can think of for using a special flag instead
of holding a reference in vgone() is the following: if code called
by vgone() has a bug and drops one too many references, then the
negative reference count will be caught sooner. It's worth at least
making sure that we get a clean panic in this case since recursion
caused by the reference count hitting zero twice can lead to messy
panics that are difficult to debug.

Ian


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503110231.aa37257>