Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Jan 1998 00:16:37 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        dyson@freebsd.org
Cc:        kato@migmatite.eps.nagoya-u.ac.jp, current@freebsd.org
Subject:   Re: Panic while clustered I/O
Message-ID:  <199801220016.RAA14275@usr09.primenet.com>
In-Reply-To: <199801211201.HAA00803@dyson.iquest.net> from "John S. Dyson" at Jan 21, 98 07:01:17 am

next in thread | previous in thread | raw e-mail | index | archive | help
> The VFS layering is being worked on aggressively right now.  Hopefully,
> it will be more possible to fix the problem, after I get done with my
> part of the layering issues.  PHK has started working on it, and I am
> working on the VFS/VM interface.  Once we all get done with it, I think
> that it will be much easier to debug these problems.

What exactly are you doing to the VFS layering?

Is there anything I can help with?

I would *dearly* love to get the following changes in:

1.	Enforced use of VOP_GETPAGE/VOP_PUTPAGE in all cases
	so that there are no buffer list aliases in an FS
	stack.  This will allow nullfs to truly be nullfs.
	The synchronization failures have been from stacked
	dirty pages.

2.	Hang the advisory lock list off the vnode where the
	pages live instead of off the in-core inode.

3.	Make the advisory locking code veto-based instead of
	call-down based.  This would move much duplicate code
	out of each FS instance, as well as reducing the number
	of kernel interfaces each FS depends upon.  This is
	also necessary to support NFS client locking.

4.	Do the same for VOP_LOCK.  Right now, there is a heck
	of a lot of imperfectly duplicated functionality in
	the per-FS VOP_LOCK code.  This is a primary source
	of strange errors.

5.	Have the code that allocated the path name buffer free
	it, so that each FS in a stack does not have to be
	aware of the internals of the path name buffer.  I
	think this is necessary for Unicode and dual namespace
	support (NTFS/VFAT/VFAT32/HFS/HPFS).

6.	Get rid of the VFS_MOUNTROOT/VFS_MOUNT dichotomy.  There
	is no good reason for an fs mount to know if it's a root
	mount or not.  The root mount and the non-rooot mount
	vnode overlay code should go to common code, both of which
	call a single VOP_MOUNT.  Right now there are FS types
	that can not be mounted as your root FS because of this
	dichotomy.

7.	Fix path lookup to actually recurse instead of rewriting
	the path buffer.  This will remove the MAXPATHLEN restriction
	from a list of relative symlinks.

8.	Add a VOP_VALLOC/VOP_VRELE to allow FS's to own their own
	vnode structures if they want, instead of using a vnode
	from the global vnode pool.

9.	Seperate the VOP_READDIR code into two functions to allow
	us to get rid of "cookies" and the NFS directory read restart
	problems for some FS types.

10.	Order the contents of the vnodeop_desc array.  We can't add
	new ops not in vfs_op_descs[] in vnode_if.c at runtime, and
	ordering the array will allow us to directly reference the
	functions out with the VOP_XXX macro instead packing the
	argument list into an argument structure on the stack and VCALL
	using the VOCALL descriptor dereference (saves one function call
	and much argument munging per VOP_XXX).


On a related note:

1.	Seperate lock assertion from coelescing in the advisory
	locking.  This is also necessary for NFS client locking
	so that the lock can be asserted locally, asserted remotely,
	and deasserted locally if the remote assertion fails.

2.	Seperate quotas out into a stacking layer so they will work
	with all FS's.


Is it now the time for this stuff???


					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?199801220016.RAA14275>