From owner-freebsd-current Wed Jul 26 12:13:37 1995 Return-Path: current-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.11/8.6.6) id MAA14235 for current-outgoing; Wed, 26 Jul 1995 12:13:37 -0700 Received: from cs.weber.edu (cs.weber.edu [137.190.16.16]) by freefall.cdrom.com (8.6.11/8.6.6) with SMTP id MAA14218 for ; Wed, 26 Jul 1995 12:13:33 -0700 Received: by cs.weber.edu (4.1/SMI-4.1.1) id AA22866; Wed, 26 Jul 95 13:06:15 MDT From: terry@cs.weber.edu (Terry Lambert) Message-Id: <9507261906.AA22866@cs.weber.edu> Subject: Re: what's going on here? (NFSv3 problem?) To: wollman@halloran-eldar.lcs.mit.edu (Garrett Wollman) Date: Wed, 26 Jul 95 13:06:14 MDT Cc: freebsd-current@freebsd.org In-Reply-To: <9507261340.AA08157@halloran-eldar.lcs.mit.edu> from "Garrett Wollman" at Jul 26, 95 09:40:46 am X-Mailer: ELM [version 2.4dev PL52] Sender: current-owner@freebsd.org Precedence: bulk > < > > I have some mount system call changes to get rid of the manifest constants > > for file system types, and some user space utilites to clean up to > > handle those changes, next. > > This will, of course, use the defined getvfsbyname() interface, right? Yes. It will also replace the user space mount utility and other per file system utilties with a file system independent and a file system dependent piece. I was thinking of /sbin/fs// for the per file system utilities. The agregate of the changes will be such that by adding a kernel module and a directory to /sbin/fs/, you will have a new file system type available without changing, for instance, the enumerated type fields in sys/mount.h. Clearly, I don't have modified mount code yet -- or at least not that is suitable for patches. The intent here is to modularize the installable filesystem interface. The patches (which I have promised to upload today) to do away with XXX_mountroot frobs should mean that any new file system type which exists in the kernel at the time root is to be mounted can be used as a root file system. I expect to have to use this for OSF/1 UFS and AIX JFS. I haven't hacked on the NFS code, and some of the CD9660 code is actually very broken, IMO, so I haven't fully modified kern/init_main.c or i386/i386/autoconf.c to remove the per FS type frobbing which is being done there. I figure that code cleanup will have to wait until it has been pounded out a bit. The CD9660 code is unhappy because it screws around with options on the mount rather than the mount auto-detecting format (the Sun HFS support is the only one that's really self-imposing). The MSDOSFS root mount code isn't entirely broken, unless you consider the MSDOSFS code itself to be broken (which it is), so I'm torn between hacking it out and saving the DOSFS root mount code until someone can do a decent long name support mechanism, hopefully ala Windows95. I have added a vfs_mountroot routine to kern/vfs_conf.c that takes as its argument a pointer to the FS specific vfsops vector. I was in vfs_init.c the other day, and it is pretty obvious where the Heidemann code was pounded on to jam it into the BSD mountable file system paradigm. A cleanup of that code will have to wait until I'm willing to take about a week for it, since it will mean changing the lkm code as well. This would be a change for the better, since it would mean a common interface for file system registration. I really don't want to clean up the pardigm -- the Heidemann code *says* that it is bogus to supply an opvector without supplying an entry vector, but I'm not totoally sure I agree with that. For instance, there should probably be a disction between block and directory management code and the bottom end of FFS wants to be unaware of the system interface as much as possible... to the point of being able to be stacked on something other than UFS, in fact. That's really only a possible future direction for the code. Some of the use of linker set code is garbage and really ought to go. The set assembly is predicated on the existance of a manifest constant being declared (ie: "MFS"), and so is just as suitably done using the manifest constant instead. Or the manifest constant should go (the mountroot work means that the problem is really being tackled from both ends). While on that topic, didn't anyone notice that the PCI code is the only code that actually uses the linker set length field? Everything else looks for the NULL record at the end of the set. Does anyone want to clean up the PCI code to do the same, and get rid of the length field altogether? More later, Terry Lambert terry@cs.weber.edu --- Any opinions in this posting are my own and not those of my present or previous employers.