vfs megapatch 09 (not for the faint of heart)

看板DFBSD_kernel作者時間21年前 (2004/10/10 15:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/9 (看更多)
(This is really the second one, but I decided to synchronize the name with my internal patch file names to avoid confusion). !!! All normal users not involved with testing the VFS code should be using kernels based on the DragonFly_Stable tag and not mess with this stuff !!! Here's mega patch 09, relative to HEAD. This is not for the faint of heart. fetch http://leaf.dragonflybsd.org/~dillon/vfsx09.patch Known issues: * Possible vnode/namecache deadlocks. * While most filesystems now use vp->v_lock, I haven't done a final pass to make vp->v_lock mandatory and to clean up the few remaining inode based locks (nwfs I think and other obscure filesystems). * NullFS gets confused when you hit a mount point in the underlying filesystem. * Only UFS and NFS have been well tested Patch 09: * VX lock all VOP_CLOSE operations. * Fix two NFS issues. There was an incorrect assertion (found by David Rhodus), and the nfs_rename() code was not properly purging the target file from the cache, resulting in Stale file handle errors during, e.g. a buildworld with an NFS-mounted /usr/obj. * Fix a TTY session issue. Programs which open("/dev/tty" ,...) and then run the TIOCNOTTY ioctl were causing the system to lose track of the open count, preventing the tty from properly detaching. This is actually a very old BSD bug, but it came out of the woodwork in DragonFly because I am now attempting to track device opens explicitly. Patch 08: * Gets rid of the vnode interlock. The lockmgr interlock remains. * Introduced VX locks, which are mandatory vp->v_lock based locks. * Rewrites the locking semantics for deactivation and reclamation. (A ref'd VX lock'd vnode is now required for vgone(), VOP_INACTIVE, and VOP_RECLAIM). New guarentees emplaced with regard to vnode ripouts. * Recodes the mountlist scanning routines to close timing races. * Recodes getnewvnode to close timing races (it now returns a VX locked and refd vnode rather then a refd but unlocked vnode). * Recodes VOP_REVOKE- a locked vnode is now mandatory. * Recodes all VFS inode hash routines to close timing holes. * Removes cache_leaf_test() - vnodes representing intermediate directories are now held so the leaf test should no longer be necessary. * Splits the over-large vfs_subr.c into three additional source files, broken down by major function (locking, mount related, filesystem syncer). -Matt Matthew Dillon <dillon@backplane.com>
文章代碼(AID): #11QDul00 (DFBSD_kernel)
討論串 (同標題文章)
文章代碼(AID): #11QDul00 (DFBSD_kernel)