In message <[EMAIL PROTECTED]>, Matt Dillon writes:
>
>:When I first heard you say this I thought you were off your rockers,
>:but gradually I have come to think that you may be right.
>:
>:I think the task will be easier if we get the vnode/buf relationship
>:untangled a bit first.
>:
>:I may also pay off to take vnodes out of diskoperations entirely before
>:we try the merge.
>
> Yes, I agree. The vnode/VM-object issue is minor compared to
> the vnode/buf/io issue.
We're getting there, we're getting there...
>:Actually the main problem is that NFS relies on vnodes never being
>:freed to hold "soft references" using "struct vnode * + v_id).
>:
>:--
>:Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
>
> 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
[EMAIL PROTECTED] | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message