Module Name: src Committed By: riastradh Date: Mon Oct 15 23:08:20 UTC 2012
Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vfsops.c zfs_vnops.c zfs_znode.c Log Message: Fix various issues in zfs life cycle, locking, and vop protocol. - Restore some zfs locking and unlocking that got lost randomly. - Enable use of the BSD vnode lock. Lock order: all BSD vnode locks are taken before all zfs internal locks. There remains an issue with O_EXCL, to be solved later (famous last words). KASSERT the locking scheme up the wazoo. - Take our cruft out of zfs_lookup and move it to zfs_netbsd_lookup. Restore much of the way zfs_lookup looked to make merging future versions easier. Disable use of the namecache for now because its locking dance is too scary to contemplate. - Implement BSD semantics for rename, to appease our tests. This is a provisional kludge; eventually we need VOP_RENAME to take a flag specifying whether to use BSD semantics or POSIX semantics. - Simplify zfs_netbsd_reclaim and make it work. Now that getnewvnode never tries to vclean anything itself, we need not worry about recursion of ZFS_OBJ_MUTEX locks. - Clarify and fix genfs node initialization and destruction. zfs passes most of our atf vfs tests now, including the rename races. Still to do: - fix the impedance mismatch between our permissions model and zfs's; - fix O_EXCL (nontrivial); - throw dirconc at it and see how badly it explodes; - find why zpool sometimes wedges itself during mkfs; and - find why pool caches sometimes seem to get corrupted. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c cvs rdiff -u -r1.11 -r1.12 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c cvs rdiff -u -r1.12 -r1.13 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.