solaris-locking-cleanup-20010806
authorNickolai Zeldovich <kolya@mit.edu>
Tue, 7 Aug 2001 00:39:29 +0000 (00:39 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 7 Aug 2001 00:39:29 +0000 (00:39 +0000)
commit37edca7a4030d9c2f5153130b62f893f88fa2541
tree5df7b3542958a8cd29276a4bc1f30fcd415f855d
parent52fb58076962d52bd54aa88bce58ba9f2ff203e4
solaris-locking-cleanup-20010806

reduce afs vnode lock contention, also implements async page requests

"(In afs_GetDCache, the hints in the vnode are only updated if we
can grab the write lock without blocking.  In afs_GetOnePage, we
only grab the read lock, rather than the shared lock -- as far as
I can tell, there's nothing that needs the write lock.)

FWIW, the particular case where I was being bitten by this lock
contention was playing an mp3 from AFS space and at the same time
copying it to local disk.  The copy kept fetching chunks while
holding the read lock, so the mp3 player couldn't grab a write
lock in the page fault, even though the data was already in cache.

While I'm not fully familiar with the semantics of afs vnode locks
[do they even exist? :-)], I believe changing from shared to read
locks in afs_GetOnePage should be safe."
src/afs/SOLARIS/osi_vnodeops.c
src/afs/afs_dcache.c