:> I don't think NFS relies on vnodes never being freed.
:
:It does, in some case nfs stashes a vnode pointer and the v_id
:value away, and some time later tries to use that pair to try to
:refind the vnode again. If you free vnodes, it will still think
:the pointer is a vnode and if junk happens to be right it will
:think it is still a vnode. QED: Bad things (TM) will happen.
:
:# cd /sys/nfs
:# grep v_id *
:nfs_nqlease.c: vpid = vp->v_id;
:nfs_nqlease.c: if (vpid == vp->v_id) {
:nfs_nqlease.c: if (vpid == vp->v_id &&
:nfs_vnops.c: vpid = newvp->v_id;
:nfs_vnops.c: if (vpid == newvp->v_id) {
:
:--
:Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
hahahahahahahaha.. Look at the code more closely. v_id is not
managed by NFS, it's managed by vfs_cache.c. There's a big XXX
comment just before cache_purge() that explains it. Believe me,
NFS is the least of your worries here.
-Matt
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message