]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-client-omit-zero-length-reads-20050804
authorRainer Toebbicke <rtb@pclella.cern.ch>
Thu, 4 Aug 2005 21:45:14 +0000 (21:45 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 4 Aug 2005 21:45:14 +0000 (21:45 +0000)
The attached patch restores the behaviour of the 1.2.x client: writes
appending to a file do not trigger a 0-length read which at best updates the
current status. If another cache manager wrote to the same file in the
meantime, the file status is updated only after the StoreData RPC (and for
the changes the last one wins).

src/afs/afs_dcache.c

index 06c3846b49481bc3d3747374e9949a054b9f3851..9f3d81aea2e4f582274ee8e2911dcae3217ac84a 100644 (file)
@@ -1815,7 +1815,8 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte,
               ICL_HANDLE_OFFSET(Position));
     if ((aflags & 4) && (hiszero(avc->m.DataVersion)))
        doAdjustSize = 1;
-    if ((aflags & 4) && (abyte == Position) && (tlen >= size))
+    if ((AFS_CHUNKTOBASE(chunk) >= avc->m.Length) ||
+        ((aflags & 4) && (abyte == Position) && (tlen >= size)))
        overWriteWholeChunk = 1;
     if (doAdjustSize || overWriteWholeChunk) {
 #if    defined(AFS_AIX32_ENV) || defined(AFS_SGI_ENV)