]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: AFSTearDownFcbExtents count extents properly
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 29 Nov 2012 08:02:48 +0000 (03:02 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Mon, 3 Dec 2012 22:05:03 +0000 (14:05 -0800)
Fcb->Specific.File.ExtentsCount cannot be used directly
in the for loop conditional because each call to AFSFreeExtent()
decrements the value.  Instead, save the original value to
'lFcbExtentCount' and use that in the loop conditional.

Change-Id: I7b2dc0fbd1cbf0eec2f627f8caad8c973c3437c7
Reviewed-on: http://gerrit.openafs.org/8566
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp

index 0390f23b99bfca75038dc853ef2ba7ee6fe0d5fd..078200e6c71a34313816d2ab534baae72e0290f8 100644 (file)
@@ -151,6 +151,7 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb,
     LIST_ENTRY          *le, *leNext;
     AFSExtent           *pEntry;
     LONG                 lExtentCount = 0, lProcessCount = 0;
+    LONG                 lFcbExtentCount;
     ULONG                ulReleaseCount = 0;
     size_t               sz;
     AFSReleaseExtentsCB *pRelease = NULL;
@@ -215,8 +216,9 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb,
                         TRUE);
 
         for( le = Fcb->Specific.File.ExtentsLists[AFS_EXTENTS_LIST].Flink,
-             lExtentCount = 0;
-             lExtentCount < Fcb->Specific.File.ExtentCount;
+             lExtentCount = 0,
+             lFcbExtentCount = Fcb->Specific.File.ExtentCount;
+             lExtentCount < lFcbExtentCount;
              lExtentCount += lProcessCount)
         {
 
@@ -227,7 +229,7 @@ AFSTearDownFcbExtents( IN AFSFcb *Fcb,
             for( lProcessCount = 0, ulReleaseCount = 0;
                  !IsListEmpty( le) &&
                  ulReleaseCount < AFS_MAXIMUM_EXTENT_RELEASE_COUNT &&
-                 lExtentCount + lProcessCount < Fcb->Specific.File.ExtentCount;
+                 lExtentCount + lProcessCount < lFcbExtentCount;
                  lProcessCount++, le = leNext)
             {