]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Drop GLOCK over the entire loop iterating over the iovec, since
authorNickolai Zeldovich <kolya@mit.edu>
Thu, 22 Aug 2002 20:43:30 +0000 (20:43 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Thu, 22 Aug 2002 20:43:30 +0000 (20:43 +0000)
it's not needed for any operations performed in the loop (rather
than dropping it just for the memcpy inside the loop).

src/afs/afs_memcache.c

index 30b55c59b680530a4416bf4f073806c5d6931ad6..8981c2ca0fd3eca4aef2cb69a77caca5fc76a52f 100644 (file)
@@ -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;