Module Name: src Committed By: ad Date: Sat Apr 4 20:49:31 UTC 2020
Modified Files: src/sys/fs/cd9660: cd9660_lookup.c cd9660_vfsops.c src/sys/fs/msdosfs: msdosfs_lookup.c msdosfs_vfsops.c src/sys/fs/tmpfs: tmpfs_subr.c tmpfs_vfsops.c src/sys/kern: vfs_cache.c vfs_getcwd.c vfs_lookup.c vfs_syscalls.c vfs_vnode.c src/sys/miscfs/genfs: layer_vnops.c src/sys/miscfs/nullfs: null_vfsops.c src/sys/miscfs/procfs: procfs_vfsops.c src/sys/sys: fstypes.h namei.src src/sys/ufs/chfs: chfs_vnops.c src/sys/ufs/ext2fs: ext2fs_lookup.c ext2fs_vfsops.c src/sys/ufs/ffs: ffs_vfsops.c src/sys/ufs/lfs: lfs_vfsops.c ulfs_lookup.c src/sys/ufs/ufs: ufs_lookup.c ufs_vnops.c Log Message: Merge the remaining changes from the ad-namecache branch, affecting namei() and getcwd(): - push vnode locking back as far as possible. - do most lookups directly in the namecache, avoiding vnode locks & refs. - don't block new refs to vnodes across VOP_INACTIVE(). - get shared locks for VOP_LOOKUP() if the file system supports it. - correct lock types for VOP_ACCESS() / VOP_GETATTR() in a few places. Possible future enhancements: - make the lookups lockless. - support dotdot lookups by being lockless and inferring absence of chroot. - maybe make it work for layered file systems. - avoid vnode references at the root & cwd. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/sys/fs/cd9660/cd9660_lookup.c cvs rdiff -u -r1.95 -r1.96 src/sys/fs/cd9660/cd9660_vfsops.c cvs rdiff -u -r1.35 -r1.36 src/sys/fs/msdosfs/msdosfs_lookup.c cvs rdiff -u -r1.133 -r1.134 src/sys/fs/msdosfs/msdosfs_vfsops.c cvs rdiff -u -r1.107 -r1.108 src/sys/fs/tmpfs/tmpfs_subr.c cvs rdiff -u -r1.76 -r1.77 src/sys/fs/tmpfs/tmpfs_vfsops.c cvs rdiff -u -r1.136 -r1.137 src/sys/kern/vfs_cache.c cvs rdiff -u -r1.56 -r1.57 src/sys/kern/vfs_getcwd.c cvs rdiff -u -r1.214 -r1.215 src/sys/kern/vfs_lookup.c cvs rdiff -u -r1.544 -r1.545 src/sys/kern/vfs_syscalls.c cvs rdiff -u -r1.116 -r1.117 src/sys/kern/vfs_vnode.c cvs rdiff -u -r1.68 -r1.69 src/sys/miscfs/genfs/layer_vnops.c cvs rdiff -u -r1.97 -r1.98 src/sys/miscfs/nullfs/null_vfsops.c cvs rdiff -u -r1.103 -r1.104 src/sys/miscfs/procfs/procfs_vfsops.c cvs rdiff -u -r1.37 -r1.38 src/sys/sys/fstypes.h cvs rdiff -u -r1.52 -r1.53 src/sys/sys/namei.src cvs rdiff -u -r1.36 -r1.37 src/sys/ufs/chfs/chfs_vnops.c cvs rdiff -u -r1.89 -r1.90 src/sys/ufs/ext2fs/ext2fs_lookup.c cvs rdiff -u -r1.217 -r1.218 src/sys/ufs/ext2fs/ext2fs_vfsops.c cvs rdiff -u -r1.366 -r1.367 src/sys/ufs/ffs/ffs_vfsops.c cvs rdiff -u -r1.377 -r1.378 src/sys/ufs/lfs/lfs_vfsops.c cvs rdiff -u -r1.42 -r1.43 src/sys/ufs/lfs/ulfs_lookup.c cvs rdiff -u -r1.151 -r1.152 src/sys/ufs/ufs/ufs_lookup.c cvs rdiff -u -r1.249 -r1.250 src/sys/ufs/ufs/ufs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.