Re: VFS: C99 sparse format for struct vfsops

From: Terry Lambert <tlambert2_at_mindspring.com>
Date: Tue, 03 Jun 2003 22:37:49 -0700
Paul Richards wrote:
> On Mon, Jun 02, 2003 at 09:04:11AM -0700, Hiten Pandya wrote:
> >       And how many times is vfc_register() called?  Its not in the
> >       patch of an I/O operation or anything.  Its just a mount time
> >       overhead which will go through -- a one time thing.
> >
> > On Mon, Jun 02, 2003 at 08:17:03AM -0700, Terry Lambert wrote:
> > > Consider this going forward: someone adds a new VFSOP to the
> > > list of allowable VFSOPs, and the vfs_init() doesn't have any
> > > specific code for it.
> 
> You should look at kobj, it's precisely this sort of dynamic
> dispatching that it was designed to support.

I think it's inappropriate technology for the VFSOP and VOP
cases.  The real issue with VFSOP and VOP calls is that they
are call-by-descriptor, and the descriptor reference can be
proxied across a protection domain, no problem, as long as
there are not weird defaults.

For example, with a proxy in and out of the kernel of a top
and bottem end named pipe/socket/other datia serialization
interface, it's possible to do VFS stacking layer develeopement
in user space, where there are better debugging tools, and where
a failure is not fatal to the kernel.  That means that the
developement can proceed much rapidly from prototype to the
finished product.

It's also possible to proxy over a network; this provides a
means of implementing an extensible network file system
framework (like that which was prototyped by John Heidemann's
students) to implement operations, as needed.  One of the
widely acknowledged weaknesses of NFS is it's inability to
be meaningfully extended for things like extended attributes,
ACLs, mandatory access controls, etc. -- all things requiring
VFSOPs or VOPs to to b added to the protocol, structures
defined, agreed upon by both parties, etc., etc..

With the descriptor mechanism, I may pass from the system call
interface to a quiota stacking layer on a local machine, to a
crypto stacking layer on a border machine, over the Internet,
to a crypto layer on another border machine at the remote site,
to a local machine at the remote site, and then down to FFS and
from there to a local disk array.

Not only that, the middle layers don't have to know all the VOPs
descriptors, because they pass them through unmolested, and so
the border machines are unaware of how to decode the content
they are transiting.

I really can't do this with kobj; with kobj, I can only pass
the interface references around within a single protection
domain on a single machine.

-- Terry
Received on Tue Jun 03 2003 - 20:39:09 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:10 UTC