dcache-fix-alen-miscalculation-bug-20020805
authorHartmut Reuter <reuter@rzg.mpg.de>
Mon, 5 Aug 2002 22:03:34 +0000 (22:03 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 5 Aug 2002 22:03:34 +0000 (22:03 +0000)
*alen was being calculated wrong in GetDCache
also fix fstrace items

src/afs/afs_dcache.c
src/afs/afs_trace.et

index 1efa8de..14d666a 100644 (file)
@@ -1417,6 +1417,7 @@ static int afs_UFSCacheFetchProc(acall, afile, abase, adc, avc,
     (*abytesXferredP) = 0;
 #endif /* AFS_NOSTATS */
     tbuffer = osi_AllocLargeSpace(AFS_LRALLOCSIZ);
+    adc->validPos = abase;
     do {
        if (moredata) {
            RX_AFS_GUNLOCK();
@@ -1470,7 +1471,7 @@ static int afs_UFSCacheFetchProc(acall, afile, abase, adc, avc,
            abase += tlen;
            length -= tlen;
            adc->validPos = abase;
-           afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAIT,
+           afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAKE,
                       ICL_TYPE_STRING, __FILE__,
                       ICL_TYPE_INT32, __LINE__,
                       ICL_TYPE_POINTER, adc,
@@ -2396,7 +2397,7 @@ RetryLookup:
 #endif /* AFS_NOSTATS */
 
        tdc->dflags &= ~DFFetching;
-       afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAIT,
+       afs_Trace4(afs_iclSetp, CM_TRACE_DCACHEWAKE,
                   ICL_TYPE_STRING, __FILE__,
                   ICL_TYPE_INT32, __LINE__,
                   ICL_TYPE_POINTER, tdc,
@@ -2487,7 +2488,7 @@ done:
            *aoffset = abyte;
        else
            *aoffset = AFS_CHUNKOFFSET(abyte);
-       *alen = *aoffset + tdc->f.chunkBytes - abyte;
+       *alen = (tdc->f.chunkBytes - *aoffset);
        ReleaseSharedLock(&tdc->lock);
     }
 
index 910f68f..934cca1 100644 (file)
@@ -153,12 +153,13 @@ error_table 2 ZCM
        ec      CM_TRACE_STOREPROC2, "StoreProc got 0x%x"
        ec      CM_TRACE_ADJUSTSIZE, "AdjustSize index %d oldSize %d newSize %d blocksUsed %d"
        ec      CM_TRACE_SETLENGTH, "%s line %d: m.Length was (0x%x, 0x%x), now (0x%x, 0x%x)"
-       ec      CM_TRACE_DCACHEWAIT, "%s line %d: sleeping or waiting for 0x%x flags 0x%x" 
+       ec      CM_TRACE_DCACHEWAIT, "%s line %d: waiting for 0x%x flags 0x%x" 
        ec      CM_TRACE_VNODEREAD, "UFSRead: tdc 0x%x, offset (0x%x, 0x%x) len (0x%x 0x%x)" 
        ec      CM_TRACE_SLEEP, "Sleep: evp 0x%x, count %d seq 0x%x evp->seq 0x%x" 
        ec      CM_TRACE_WAKE, "Wakeup: evp 0x%x, evp->seq 0x%x"
        ec      CM_TRACE_DENTRYDELETE, "d_delete inode 0x%x d_name %s/%s"
        ec      CM_TRACE_DENTRYIPUT, "d_iput inode 0x%x d_name %s/%s"
        ec      CM_TRACE_TRYFLUSHDCACHECHILDREN, "TryFlushDcacheChildren ip 0x%x"
+       ec      CM_TRACE_DCACHEWAKE, "%s line %d: waking up waiters for 0x%x flags 0x%x"
 end