Date: Fri, 17 Apr 1998 13:59:14 +0900 (JST) From: Michael Hancock <michaelh@cet.co.jp> To: freebsd-current@FreeBSD.ORG Cc: freebsd-fs@FreeBSD.ORG Subject: Updated vfs patches Message-ID: <Pine.SV4.3.95.980417133824.17216A-100000@parkplace.cet.co.jp>
next in thread | raw e-mail | index | archive | help
I've separated the layering fixes and the VFS_VRELE framework into separate projects. Here is an updated patch for making *both* refcounting and locking of vnodes reflexive using the current framework. http://www.freebsd.org/~mch/vop1a.diff For a testing tool see http://www.freebsd.org/~mch Some things I should note in this patch are listed below: 1) In the original code, ext2_rmdir and msdosfs_rmdir release the lock across the truncate call but ufs_rmdir doesn't. The ufs_rmdir implementation make it clean for me because I just delete the vput(), but in ext2_rmdir and msdosfs_rmdir I must reacquire the lock so the generic layer can do the vput() (phew!). I'm not sure if we should be holding a lock across truncate and I have yet to review the logs yet to see why. Perhaps someone can shed some light on this. 2) In the union filesystem, there are a also a few case where I have to reacquire the lock. However, it appears that there is an invariant that says if the upper vnode is held by me I can "diddle with the union vnode locking state at will", see UN_KLOCK and UN_ULOCK. I take advantage of this and reacquire the lock by just twiddling a bit instead of calling vn_lock(). Otherwise, this patch consists of mostly deleting vrele and vput calls in underlying filesystems and moving them to the generic layer. Regards, Mike Hancock To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SV4.3.95.980417133824.17216A-100000>