Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Feb 1996 13:21:33 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        current@freebsd.org, hackers@freebsd.org
Subject:   FS PATCHES: THE NEXT GENERATION
Message-ID:  <199602062021.NAA03106@phaeton.artisoft.com>

next in thread | raw e-mail | index | archive | help

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.
=============================================================================



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