From owner-freebsd-current Tue Feb 6 12:22:58 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id MAA08049 for current-outgoing; Tue, 6 Feb 1996 12:22:58 -0800 (PST) Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.211]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id MAA08025 Tue, 6 Feb 1996 12:22:52 -0800 (PST) Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id NAA03106; Tue, 6 Feb 1996 13:21:34 -0700 From: Terry Lambert Message-Id: <199602062021.NAA03106@phaeton.artisoft.com> Subject: FS PATCHES: THE NEXT GENERATION To: current@freebsd.org, hackers@freebsd.org Date: Tue, 6 Feb 1996 13:21:33 -0700 (MST) X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-current@freebsd.org Precedence: bulk Well, I now have a working spu2/CVS synchronization mechanism, so I guess it's time to try again... Here is yet another revision of my FS patches, this time as full source files against a -current checked out source tree from a daily SUP update. These changes *WILL* go in cleanly. I believe they are ready to go into the main source tree following normal review. I believe the path buffer processing changes (the majority of the code changes result from this) to be especially important in light of the recent interest in support for VFAT. VFAT, as you may or may not know, has two name spaces: and 8.3 namespace in the DOS code page, and a 255 Unicode name space for VFAT "long names". In light of the desire to support VFAT, NTFS, and HPFS file systems, it will be necessary to further modiy the path processing algorithms to operate on a component basis, and (potentially) to support multiple down-components (Unicode vs. non-Unicode vs. "short name", etc.). I already have some of these changes (I have a UFS with a modified directory structure, the ability to do case-insensitve lookup via flag, and the ability to store both Unicode and shortname data), but since they are somewhat more controversial they are not included in this patch set. The README uploaded with the patch set follows the signature. If anyone has a problem using these patches, please contact me directly. I am especially interested in NFS client/server effects, since I've only been able to try the server code locally (the NFS patches have not change significantly in two months, at which time I *did* do extensive bidirectional testing -- I don't believe that this will be a significan problem). If you can beat on a system with several "make world"'s and then use "vmstat -m" to verify there are no memory leaks in the path buffers: namei 0 0K 4K 8892K 172739 0 0 1K ^ ^ then I would appreciate it. Regards, Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. ============================================================================= This is the README for the file ftp://freefall.freebsd.org/FS_PATCHES.tar.gz, my latest FS patches as replacement files against -current as of 4am sup2 SUP on 06 Feb 96. There are 22 modified files in FS_PATCHES.tar.gz: i386/ibcs2/imgact_coff.c isofs/cd9660/cd9660_vnops.c kern/kern_exec.c kern/uipc_usrreq.c kern/vfs_init.c kern/vfs_lookup.c kern/vfs_syscalls.c kern/vfs_vnops.c kern/vnode_if.sh miscfs/devfs/devfs_vnops.c miscfs/procfs/procfs_vnops.c miscfs/union/union_subr.c msdosfs/msdosfs_vnops.c nfs/nfs.h nfs/nfs_node.c nfs/nfs_nqlease.c nfs/nfs_serv.c nfs/nfs_subs.c nfs/nfs_vnops.c nfs/nfsm_subs.h sys/namei.h ufs/ufs/ufs_vnops.c The patches: o Abstract the path processing. The underlying FS is no longer responsible for freeing cn_pnbuf buffers. o Fix some minor nits in NFS o Get rid of the goto's in vfs_syscalls.c. o Reorder a number of functions to cause them to be single entry/exit. o Add an EXCLUDE flag to CN_FLAGS to force CREATE ops to fail with EEXIST. This allows the removal of a lot of bogus and duplicate error handling code in the namei( CREATE, ...) case. o Move the definition vfs_opv_numops to node_if.c. This is a necessary change to allow the creation of kernels with zero default file systems. The previous code required that at least one file system exist to correctly do initialization. This change is also necessary to allow the addition of ops to the vector tables for new file systems with the recreation of vnode_if.c instead of recompilation of a number of kernel pieces in addition to that (like vfs_init.c, which no longer requires recompilation when the number of ops changes). This undoes some of the bogosity introduced when the Heidemann framework was pounded into BSD 4.4 with a blunt instrument. Since these are full modified files, installing them, followed by a CVS update, followed by a CVS checkin should be sufficient to put them in the current source tree. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. =============================================================================