Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jan 2005 22:54:45 +0000
From:      Peter Edwards <peadar.edwards@gmail.com>
To:        Poul-Henning Kamp <phk@phk.freebsd.dk>
Cc:        arch@freebsd.org
Subject:   Re: Slight change of vnode<-->vm object relationship.
Message-ID:  <34cb7c84050111145415980aa2@mail.gmail.com>
In-Reply-To: <23763.1105479646@critter.freebsd.dk>
References:  <23763.1105479646@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
How about mmap() mappings after the close()? These can persist post
VOP_CLOSE, can't they?


On Tue, 11 Jan 2005 22:40:46 +0100, Poul-Henning Kamp
<phk@phk.freebsd.dk> wrote:
> 
> Today a vnode gets its vm object through an explicit call to
> VOP_CREATEVOBJECT() and these calls are scattered all over the place
> in code which shouldn't really have to know about this detail.
> 
> It seems to me that it would make much more sense to make it became
> the responsibility of VOP_OPEN() and VOP_CLOSE() to manage the vnodes
> vm_object.
> 
> First of all, it gets put into the filesystem which implements the
> vnode, that's always cleaner, even if it just ends up calling a generic
> function to do all the work.
> 
> But second, and from a buffer cache perspective far more important
> reason: it makes the VOP_GETVOBJECT() call go away because the
> vp->v_object pointer will be stable as long as the vnode is open.
> 
> The vp->v_object pointer is likely to be valid also after the vnode
> has been closed, at least as long as there are cached pages in
> RAM for the vnode, but again the vp->v_object pointer will tell
> us that without a need to call down the stack of vnodes to find out.
> 
> For NULLFS/UNIONFS this works particular elegant:  on VOP_OPEN,
> the lower vnods v_object is copied to the upper vnode (I don't even
> think we need to grab a reference because we already have a reference
> on the lower vnode anyway).  On VOP_CLOSE we simply zero the v_object
> pointer on the upper vnode.  The lower vnode will still cache the
> object and pages, and if we open again, all we have to do is copy
> the pointer.
> 
> Anyone spot what I didn't ?
> 
> --
> 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.
> _______________________________________________
> freebsd-arch@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
>



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