cvs commit: src/sys/fs/msdosfs msdosfs_vfsops.c src/sys/kern vfs_bio.c vfs_cluster.c vfs_default.c vfs_subr.c src/sys/nfs4client nfs4_vfsops.c nfs4_vnops.c src/sys/nfsclient nfs_subs.c nfs_vfsops.c nfs_vnops.c src/sys/nfsserver nfs_serv.c ...

Jeff Roberson jroberson at chesapeake.net
Sat Mar 22 17:30:43 PDT 2008


On Sat, 22 Mar 2008, Alfred Perlstein wrote:

> * Jeff Roberson <jeff at FreeBSD.org> [080322 02:15] wrote:
>> jeff        2008-03-22 09:15:16 UTC
>>
>>   FreeBSD src repository
>>
>>   Modified files:
>>     sys/fs/msdosfs       msdosfs_vfsops.c
>>     sys/kern             vfs_bio.c vfs_cluster.c vfs_default.c
>>                          vfs_subr.c
>>     sys/nfs4client       nfs4_vfsops.c nfs4_vnops.c
>>     sys/nfsclient        nfs_subs.c nfs_vfsops.c nfs_vnops.c
>>     sys/nfsserver        nfs_serv.c
>>     sys/sys              buf.h bufobj.h
>>     sys/ufs/ffs          ffs_inode.c ffs_rawread.c ffs_softdep.c
>>                          ffs_vfsops.c ffs_vnops.c
>>   Log:
>>    - Complete part of the unfinished bufobj work by consistently using
>>      BO_LOCK/UNLOCK/MTX when manipulating the bufobj.
>>    - Create a new lock in the bufobj to lock bufobj fields independently.
>>      This leaves the vnode interlock as an 'identity' lock while the bufobj
>>      is an io lock.  The bufobj lock is ordered before the vnode interlock
>>      and also before the mnt ilock.
>
> What is an "identity lock"?  Does that mean it just protects the
> pointer?

Well this is my own rough term meaning it helps protect things related to 
the identity of the vnode.  Or the maping from {fs, inode} to vnode.  This 
includes the reference counts, various flags, etc.  The vnode interlock is 
often used to pin the identity until we go to sleep on the lockmgr lock. 
After we wakeup with the lock held we check that the identity hasn't 
changed by using VI_DOOMED.

Thanks,
Jeff

>
>>    - Exploit this new lock order to simplify softdep_check_suspend().
>>    - A few sync related functions are marked with a new XXX to note that
>>      we may not properly interlock against a non-zero bv_cnt when
>>      attempting to sync all vnodes on a mountlist.  I do not believe this
>>      race is important.  If I'm wrong this will make these locations easier
>>      to find.
>>
>>   Reviewed by:    kib (earlier diff)
>>   Tested by:      kris, pho (earlier diff)
>>
>>   Revision  Changes    Path
>>   1.187     +4 -0      src/sys/fs/msdosfs/msdosfs_vfsops.c
>>   1.541     +5 -4      src/sys/kern/vfs_bio.c
>>   1.177     +18 -13    src/sys/kern/vfs_cluster.c
>>   1.143     +12 -15    src/sys/kern/vfs_default.c
>>   1.722     +29 -25    src/sys/kern/vfs_subr.c
>>   1.33      +1 -0      src/sys/nfs4client/nfs4_vfsops.c
>>   1.42      +23 -29    src/sys/nfs4client/nfs4_vnops.c
>>   1.154     +8 -5      src/sys/nfsclient/nfs_subs.c
>>   1.203     +1 -0      src/sys/nfsclient/nfs_vfsops.c
>>   1.282     +27 -33    src/sys/nfsclient/nfs_vnops.c
>>   1.179     +7 -8      src/sys/nfsserver/nfs_serv.c
>>   1.204     +1 -1      src/sys/sys/buf.h
>>   1.20      +8 -16     src/sys/sys/bufobj.h
>>   1.110     +5 -4      src/sys/ufs/ffs/ffs_inode.c
>>   1.32      +11 -16    src/sys/ufs/ffs/ffs_rawread.c
>>   1.221     +65 -69    src/sys/ufs/ffs/ffs_softdep.c
>>   1.339     +4 -3      src/sys/ufs/ffs/ffs_vfsops.c
>>   1.181     +14 -12    src/sys/ufs/ffs/ffs_vnops.c
>
> -- 
> - Alfred Perlstein
>


More information about the cvs-src mailing list