From owner-freebsd-hackers Fri Oct 24 18:14:13 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id SAA02835 for hackers-outgoing; Fri, 24 Oct 1997 18:14:13 -0700 (PDT) (envelope-from owner-freebsd-hackers) Received: from smtp03.primenet.com (smtp03.primenet.com [206.165.5.84]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id SAA02828 for ; Fri, 24 Oct 1997 18:14:04 -0700 (PDT) (envelope-from tlambert@usr08.primenet.com) Received: (from daemon@localhost) by smtp03.primenet.com (8.8.7/8.8.7) id SAA07130; Fri, 24 Oct 1997 18:14:02 -0700 (MST) Received: from usr08.primenet.com(206.165.6.208) via SMTP by smtp03.primenet.com, id smtpd007124; Fri Oct 24 18:13:52 1997 Received: (from tlambert@localhost) by usr08.primenet.com (8.8.5/8.8.5) id SAA10113; Fri, 24 Oct 1997 18:13:43 -0700 (MST) From: Terry Lambert Message-Id: <199710250113.SAA10113@usr08.primenet.com> Subject: Re: zipfs filesystem anyone ? To: gurney_j@resnet.uoregon.edu Date: Sat, 25 Oct 1997 01:13:43 +0000 (GMT) Cc: tlambert@primenet.com, michaelh@cet.co.jp, luigi@labinfo.iet.unipi.it, hackers@FreeBSD.ORG In-Reply-To: <19971024114243.36902@hydrogen.nike.efn.org> from "John-Mark Gurney" at Oct 24, 97 11:42:43 am X-Mailer: ELM [version 2.4 PL23] Content-Type: text Sender: owner-freebsd-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > > 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.