Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 13 Jan 2005 22:45:08 +0100
From:      "Poul-Henning Kamp" <phk@phk.freebsd.dk>
Cc:        arch@freebsd.org
Subject:   Re: Slight change of vnode<-->vm object relationship. 
Message-ID:  <79157.1105652708@critter.freebsd.dk>
In-Reply-To: Your message of "Tue, 11 Jan 2005 22:40:46 %2B0100." <23763.1105479646@critter.freebsd.dk> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <23763.1105479646@critter.freebsd.dk>, Poul-Henning Kamp writes:
>
>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.

OK, with some input from various people, in particular kan@, I think
we have this stuff worked out:

The filesystems implementing a given vnode is responsible for
creating a vm_object for the vnode if it should have one.

This will happen in the following three entrances to the filesystem:

	vop_open()
		For regular files and directories.

	vop_lookup()
		For directories.

	vfs_fhtovp()
		For files and directories served via NFS.

Normal filesystems will call the (function currently known as)
vop_stdcreatevobject() in these three places.

For the layered filesytems (nullfs, umapfs, unionfs) the same
three places will just copy lowervp->v_object (possibly gaining
a reference ?) [1]

As a result of this, VOP_CREATEVOBJECT() is always an intra-filesystem
activity and will therefore be discontinued as a VOP.

VOP_DESTROYVOBJECT() will similarly be removed and instead filesystems
will be responsible for dismantling the vm_object in their vop_reclaim.
function.

VOP_GETVOBJECT() and VV_OBJBUF flags becomes unnecessary, instead
a NULL check on vp->v_object can be used.

Please shoot this down if you can spot flaws...

Otherwise keep an eye on p4://depot/user/phk/phk_bufwork/...

[1] I still don't think it will be possible to NFS-export unionfs
because we do not want to copy the lower file to the upper filesystem
until we know it is going to be written to, and that bit of information
is currently not availble from NFS since it is stateless. [2]

[2] There are other issues with unionfs as well.  I'm not promising
to fix it, but I'll try to keep it as functional as it is today.

-- 
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.



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