Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Nov 1995 13:15:11 -0800 (PST)
From:      Julian Elischer <julian@ref.tfs.com>
To:        hackers@freebsd.org
Subject:   VOP_RECLAIM and  vnode references..
Message-ID:  <199511232115.NAA11760@ref.tfs.com>

next in thread | raw e-mail | index | archive | help
In vclean() (the only usage of VOP_RECLAIM I have found) the following
happens:

If a vnode has no references, it's left that way..
if it DOES have a reference (v_usecount > 0) then it's artificially
incremented by one, to stop it going to 0 while the VOP_RECLAIM is  active..

this is a bit stupid in my opinion...

firstly, in devfs, my sanity code that checks that a vnode is referenced
before it uses it, throws a fit when asked by devfs_reclaim to
find the devfs_node associated with the vnode..

(this is why those of you that have made devfs report seeing
"!no reference!" on the console.. secoondly, it's unknown how long
a VOP_RECLAIM might take and something else may 
come in and raise and lower the reference count while it's
happenning.. (not devfs, but their might be slower fs's)

surely the v_usecount should be raised by one
regardless of whether it is already non-zero.?


the VOP_LOCK might make this un-needed, but I am loath
to take the sanity check code out of my devfs code..
I figure that if I'm doing a vntodn() (vnode-to-devfsnode)
then I should be doing it on a referenced vnode..
I don't like the fact that there is ONE exception..

"Except whenn asked to do it in a reclaim operation.."
I guess I could do a vref in devfs_reclaim before calling
vntodn() but why make a specific fix if a general one
is just as easy?
does anyone know why it's like it is?
I BELIEVE (but don't know) that this is the only time when
a vnode is passed toa filesystem without a reference..

julian

+----------------------------------+       ______ _  __
|   __--_|\  Julian Elischer       |       \     U \/ / On assignment
|  /       \ julian@ref.tfs.com    +------>x   USA    \ in a very strange
| (   OZ    ) 300 lakeside Dr. oakland CA. \___   ___ | country !
+- X_.---._/  USA+(510) 645-3137(wk)           \_/   \\            
          v



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