Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Oct 1997 01:13:43 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        gurney_j@resnet.uoregon.edu
Cc:        tlambert@primenet.com, michaelh@cet.co.jp, luigi@labinfo.iet.unipi.it, hackers@FreeBSD.ORG
Subject:   Re: zipfs filesystem anyone ?
Message-ID:  <199710250113.SAA10113@usr08.primenet.com>
In-Reply-To: <19971024114243.36902@hydrogen.nike.efn.org> from "John-Mark Gurney" at Oct 24, 97 11:42:43 am

next in thread | previous in thread | raw e-mail | index | archive | help
> > If it's in there, then this is an important first step.  The next step
> > would be to add a special placeholder descriptor that can be replaced
> > in vfs_op_desc for several slots.  This would make it so you didn't
> > have to rebuild all of vnode_if.c and vnode_if.h to add new descriptors:
> > you can overwrite the placeholders instead.
> 
> or should we simply use the dummy NULL entry (and add some) for the place
> holder?

The list terminator is still necessary for the population pass, where
the vectors get populated.  The VOP_REPLACEME needs to be seperate.


> personally, a possible define that declares I want a possible X extra
> vop vectors...  and then have a couple variables that tell you the
> maximum number, and the current last offset...  this shouldn't be hard
> to do...

They kind of need to be static, unless the vector list becomes a linker
set.  This can't happen until the linker set can be agregated between
linker uses.  Basically, if you want to be able to pull it back out
later, you have to be able to distinguish it.  My plan was to use a
seperate ELF section for each modules contribution to global linker
sets.  This lets you use an ELF image archiver to "permanently" add
modules into the kernel (no difference between kld modules and normal
kernel components, except the image file that backs them).


> > Actually, that particular change (not using FFS to size the table)
> > is the first change in a chain that lets you boot a machine without
> > a file system at all (my original purpose).  8-) 8-).
> 
> kool....  are you on -current?

Yes.

> I guess I should of announced my vfsinit
> patches to hackers instead...  basicly, to get ride of LKM's and prepare
> for kld modules, I needed to change the vfs system to initalize on a
> permodule basis instead of a initalize all staticly compiled module
> idea...

Be very careful here.  I did this code under Windows 95.  It turns out
that you need to sort the *total* descriptor list, or you will end up
with order of reference problems.  I loaded the UFS, then I loaded the
FFS, and initialized them in that order.  This includes the NULL ops
that you normally leave of tf the end, and llow to be set in the
population pass (referred to above).

Sorting the list also allows you to reference by index instead of by
descriptor.  If you think about it, you won't have a descriptor for
a new VOP, if you dynamically load it, in vnode_if.h.  This loses the
little glue function.  To fix this, you have to kill the glue functions.
And you can do it if you can indext into the op vector and get the right
function.


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



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