Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Apr 2001 19:34:16 +0200
From:      Poul-Henning Kamp <phk@critter.freebsd.dk>
To:        Matt Dillon <dillon@earth.backplane.com>
Cc:        Kirk McKusick <mckusick@mckusick.com>, Julian Elischer <julian@elischer.org>, Rik van Riel <riel@conectiva.com.br>, freebsd-hackers@FreeBSD.ORG, David Xu <bsddiy@21cn.com>
Subject:   Re: vm balance 
Message-ID:  <24577.987528856@critter>
In-Reply-To: Your message of "Tue, 17 Apr 2001 10:28:27 PDT." <200104171728.f3HHSRY94888@earth.backplane.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <200104171728.f3HHSRY94888@earth.backplane.com>, 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
phk@FreeBSD.ORG         | 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 majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




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