From: Nickolai Zeldovich Date: Thu, 22 Aug 2002 20:43:30 +0000 (+0000) Subject: Drop GLOCK over the entire loop iterating over the iovec, since X-Git-Tag: openafs-devel-1_3_50~647 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=2a6c074d3c9fd9d8db3ebab89797ec2ecaed8528;p=packages%2Fo%2Fopenafs.git Drop GLOCK over the entire loop iterating over the iovec, since it's not needed for any operations performed in the loop (rather than dropping it just for the memcpy inside the loop). --- diff --git a/src/afs/afs_memcache.c b/src/afs/afs_memcache.c index 30b55c59b..8981c2ca0 100644 --- a/src/afs/afs_memcache.c +++ b/src/afs/afs_memcache.c @@ -242,18 +242,18 @@ int afs_MemWritevBlk(register struct memCacheEntry *mceP, int offset, struct iov afs_osi_Free(oldData,mceP->dataSize); mceP->dataSize = size+offset; } + AFS_GUNLOCK(); if (mceP->size < offset) memset(mceP->data+mceP->size, 0, offset-mceP->size); for (bytesWritten = 0, i = 0 ; i < nio && size > 0 ; i++) { bytesToWrite = (size < iov[i].iov_len) ? size : iov[i].iov_len; - AFS_GUNLOCK(); memcpy(mceP->data + offset, iov[i].iov_base, bytesToWrite); - AFS_GLOCK(); offset += bytesToWrite; bytesWritten += bytesToWrite; size -= bytesToWrite; } mceP->size = (offset < mceP->size) ? mceP->size : offset; + AFS_GLOCK(); MReleaseWriteLock(&mceP->afs_memLock); return bytesWritten;