Windows: Periodic Worker CleanupFcb to Flush Dirty Extents
authorJeffrey Altman <jaltman@your-file-system.com>
Fri, 7 Dec 2012 04:20:57 +0000 (23:20 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Fri, 7 Dec 2012 14:49:16 +0000 (06:49 -0800)
The AFSPrimaryVolumeWorkerThread must not check the ObjectInformationCB
reference count when determining whether or not to call AFSCleanupFcb().
One of the tasks of AFSCleanupFcb() is to flush dirty extents to the
service.

Change-Id: Id1821ec16393952d27520e73e290e520966b1d75
Reviewed-on: http://gerrit.openafs.org/8716
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/AFSWorker.cpp

index 559fc6c..bd90b46 100644 (file)
@@ -1561,12 +1561,11 @@ AFSPrimaryVolumeWorkerThread( IN PVOID Context)
                     else if( pCurrentObject->FileType == AFS_FILE_TYPE_FILE)
                     {
 
-                        AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
-
                         lCount = AFSObjectInfoIncrement( pCurrentObject);
 
-                        if( lCount == 0 &&
-                            pCurrentObject->Fcb != NULL)
+                        AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
+
+                        if( pCurrentObject->Fcb != NULL)
                         {
 
                             //