Subject: PR/32535 CVS commit: src
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: Chuck Silvers <chs@netbsd.org>
List: netbsd-bugs
Date: 12/09/2006 16:15:04
The following reply was made to PR kern/32535; it has been noted by GNATS.

From: Chuck Silvers <chs@netbsd.org>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: PR/32535 CVS commit: src
Date: Sat,  9 Dec 2006 16:11:53 +0000 (UTC)

 Module Name:	src
 Committed By:	chs
 Date:		Sat Dec  9 16:11:52 UTC 2006
 
 Modified Files:
 	src/share/man/man9: namei.9 vnodeops.9
 	src/sys/coda: coda_vfsops.c coda_vnops.c
 	src/sys/fs/adosfs: adlookup.c
 	src/sys/fs/cd9660: cd9660_lookup.c
 	src/sys/fs/filecorefs: filecore_lookup.c filecore_vfsops.c
 	src/sys/fs/msdosfs: msdosfs_lookup.c msdosfs_vnops.c
 	src/sys/fs/ntfs: ntfs.h ntfs_vnops.c
 	src/sys/fs/ptyfs: ptyfs_vfsops.c ptyfs_vnops.c
 	src/sys/fs/puffs: puffs_vfsops.c puffs_vnops.c
 	src/sys/fs/smbfs: smbfs_vfsops.c smbfs_vnops.c
 	src/sys/fs/sysvbfs: sysvbfs.c sysvbfs_vnops.c
 	src/sys/fs/tmpfs: tmpfs_vnops.c
 	src/sys/fs/udf: udf_vnops.c
 	src/sys/fs/union: union_subr.c union_vfsops.c union_vnops.c
 	src/sys/kern: vfs_cache.c vfs_getcwd.c vfs_lookup.c vfs_syscalls.c
 	src/sys/miscfs/deadfs: dead_vnops.c
 	src/sys/miscfs/fdesc: fdesc_vfsops.c fdesc_vnops.c
 	src/sys/miscfs/genfs: layer_subr.c layer_vnops.c
 	src/sys/miscfs/kernfs: kernfs_vfsops.c kernfs_vnops.c
 	src/sys/miscfs/portal: portal_vfsops.c portal_vnops.c
 	src/sys/miscfs/procfs: procfs_vfsops.c procfs_vnops.c
 	src/sys/miscfs/umapfs: umap_vnops.c
 	src/sys/nfs: nfs_export.c nfs_serv.c nfs_subs.c nfs_vnops.c
 	src/sys/sys: namei.h
 	src/sys/ufs/ext2fs: ext2fs_lookup.c ext2fs_vnops.c
 	src/sys/ufs/lfs: lfs_vnops.c
 	src/sys/ufs/ufs: ufs_extattr.c ufs_lookup.c ufs_vnops.c
 	src/sys/uvm: uvm_vnode.c
 
 Log Message:
 a smorgasbord of improvements to vnode locking and path lookup:
  - LOCKPARENT is no longer relevant for lookup(), relookup() or VOP_LOOKUP().
    these now always return the parent vnode locked.  namei() works as before.
    lookup() and various other paths no longer acquire vnode locks in the
    wrong order via vrele().  fixes PR 32535.
    as a nice side effect, path lookup is also up to 25% faster.
  - the above allows us to get rid of PDIRUNLOCK.
  - also get rid of WANTPARENT (just use LOCKPARENT and unlock it).
  - remove an assumption in layer_node_find() that all file systems implement
    a recursive VOP_LOCK() (unionfs doesn't).
  - require that all file systems supply vfs_vptofh and vfs_fhtovp routines.
    fill in eopnotsupp() for file systems that don't support being exported
    and remove the checks for NULL.  (layerfs calls these without checking.)
  - in union_lookup1(), don't change refcounts in the ISDOTDOT case, just
    adjust which vnode is locked.  fixes PR 33374.
  - apply fixes for ufs_rename() from ufs_vnops.c rev. 1.61 to ext2fs_rename().
 
 
 To generate a diff of this commit:
 cvs rdiff -r1.12 -r1.13 src/share/man/man9/namei.9
 cvs rdiff -r1.58 -r1.59 src/share/man/man9/vnodeops.9
 cvs rdiff -r1.52 -r1.53 src/sys/coda/coda_vfsops.c
 cvs rdiff -r1.50 -r1.51 src/sys/coda/coda_vnops.c
 cvs rdiff -r1.8 -r1.9 src/sys/fs/adosfs/adlookup.c
 cvs rdiff -r1.11 -r1.12 src/sys/fs/cd9660/cd9660_lookup.c
 cvs rdiff -r1.7 -r1.8 src/sys/fs/filecorefs/filecore_lookup.c
 cvs rdiff -r1.28 -r1.29 src/sys/fs/filecorefs/filecore_vfsops.c
 cvs rdiff -r1.10 -r1.11 src/sys/fs/msdosfs/msdosfs_lookup.c
 cvs rdiff -r1.34 -r1.35 src/sys/fs/msdosfs/msdosfs_vnops.c
 cvs rdiff -r1.14 -r1.15 src/sys/fs/ntfs/ntfs.h
 cvs rdiff -r1.30 -r1.31 src/sys/fs/ntfs/ntfs_vnops.c
 cvs rdiff -r1.21 -r1.22 src/sys/fs/ptyfs/ptyfs_vfsops.c
 cvs rdiff -r1.18 -r1.19 src/sys/fs/ptyfs/ptyfs_vnops.c
 cvs rdiff -r1.14 -r1.15 src/sys/fs/puffs/puffs_vfsops.c
 cvs rdiff -r1.21 -r1.22 src/sys/fs/puffs/puffs_vnops.c
 cvs rdiff -r1.60 -r1.61 src/sys/fs/smbfs/smbfs_vfsops.c
 cvs rdiff -r1.56 -r1.57 src/sys/fs/smbfs/smbfs_vnops.c
 cvs rdiff -r1.2 -r1.3 src/sys/fs/sysvbfs/sysvbfs.c
 cvs rdiff -r1.5 -r1.6 src/sys/fs/sysvbfs/sysvbfs_vnops.c
 cvs rdiff -r1.32 -r1.33 src/sys/fs/tmpfs/tmpfs_vnops.c
 cvs rdiff -r1.7 -r1.8 src/sys/fs/udf/udf_vnops.c
 cvs rdiff -r1.21 -r1.22 src/sys/fs/union/union_subr.c
 cvs rdiff -r1.40 -r1.41 src/sys/fs/union/union_vfsops.c
 cvs rdiff -r1.17 -r1.18 src/sys/fs/union/union_vnops.c
 cvs rdiff -r1.66 -r1.67 src/sys/kern/vfs_cache.c
 cvs rdiff -r1.33 -r1.34 src/sys/kern/vfs_getcwd.c
 cvs rdiff -r1.72 -r1.73 src/sys/kern/vfs_lookup.c
 cvs rdiff -r1.279 -r1.280 src/sys/kern/vfs_syscalls.c
 cvs rdiff -r1.41 -r1.42 src/sys/miscfs/deadfs/dead_vnops.c
 cvs rdiff -r1.62 -r1.63 src/sys/miscfs/fdesc/fdesc_vfsops.c
 cvs rdiff -r1.94 -r1.95 src/sys/miscfs/fdesc/fdesc_vnops.c
 cvs rdiff -r1.20 -r1.21 src/sys/miscfs/genfs/layer_subr.c
 cvs rdiff -r1.28 -r1.29 src/sys/miscfs/genfs/layer_vnops.c
 cvs rdiff -r1.74 -r1.75 src/sys/miscfs/kernfs/kernfs_vfsops.c
 cvs rdiff -r1.128 -r1.129 src/sys/miscfs/kernfs/kernfs_vnops.c
 cvs rdiff -r1.58 -r1.59 src/sys/miscfs/portal/portal_vfsops.c
 cvs rdiff -r1.68 -r1.69 src/sys/miscfs/portal/portal_vnops.c
 cvs rdiff -r1.67 -r1.68 src/sys/miscfs/procfs/procfs_vfsops.c
 cvs rdiff -r1.142 -r1.143 src/sys/miscfs/procfs/procfs_vnops.c
 cvs rdiff -r1.42 -r1.43 src/sys/miscfs/umapfs/umap_vnops.c
 cvs rdiff -r1.22 -r1.23 src/sys/nfs/nfs_export.c
 cvs rdiff -r1.119 -r1.120 src/sys/nfs/nfs_serv.c
 cvs rdiff -r1.177 -r1.178 src/sys/nfs/nfs_subs.c
 cvs rdiff -r1.245 -r1.246 src/sys/nfs/nfs_vnops.c
 cvs rdiff -r1.45 -r1.46 src/sys/sys/namei.h
 cvs rdiff -r1.46 -r1.47 src/sys/ufs/ext2fs/ext2fs_lookup.c
 cvs rdiff -r1.69 -r1.70 src/sys/ufs/ext2fs/ext2fs_vnops.c
 cvs rdiff -r1.193 -r1.194 src/sys/ufs/lfs/lfs_vnops.c
 cvs rdiff -r1.10 -r1.11 src/sys/ufs/ufs/ufs_extattr.c
 cvs rdiff -r1.80 -r1.81 src/sys/ufs/ufs/ufs_lookup.c
 cvs rdiff -r1.143 -r1.144 src/sys/ufs/ufs/ufs_vnops.c
 cvs rdiff -r1.77 -r1.78 src/sys/uvm/uvm_vnode.c
 
 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.