vfs patch 03 (preliminary)

看板DFBSD_kernel作者時間21年前 (2004/08/26 14:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
This patch removes the v_vnlock mess and simply embeds the vnode lock directly in the vnode. It goes one step beyond what FreeBSD-5 did in that it entirely removes the v_vnlock pointer field (and later on I will probably remove v_interlock in favor the v_lock.lck_interlock). This patch is currently only lightly tested and I do not consider it stable yet, I am looking for volunteers to test it with the various filesystems you normally use and report on any problems. e.g. msdosfs, cd9660, nullfs, unionfs, and so forth. UFS testing under heavy loads is also needed. I fully expect there to be some problems. DO NOT apply this patch unless you can handle the machine crashing and getting backtraces and dumps. The code will be committed, tentitively, on Saturday. fetch http://leaf.dragonflybsd.org/~dillon/vfs03.patch * remove v_vnlock. * remove locks embedded in v_data. * embed a lock in the vnode and consolidate inode locks into vnode locks. * makes locking mandatory (removes vop_nolock() and friends). (the default is now vop_stdlock, rather then vop_nolock). * substantially rewrites the inode allocation interlocks in most of the VFS's. * replaces procfs's linear lookup list with a small hash table. Adds code to fix a lookup/free race. * rewrites nullfs's locking code (this is where problems are most likely to be found). * replaces NFS's use of shared locks with normal shared/exclusive locks [ By Tomorrow I'll have an update which also fixes the race-to-root problem when an NFS volume goes offline ] -Matt
文章代碼(AID): #11BOFj00 (DFBSD_kernel)
文章代碼(AID): #11BOFj00 (DFBSD_kernel)