Windows: ObjectInformation.ObjectReferenceCount comparison
[openafs.git] / src / WINNT / afsrdr / kernel / lib / AFSClose.cpp
index 938288f..469ba51 100644 (file)
@@ -394,7 +394,7 @@ AFSClose( IN PDEVICE_OBJECT LibDeviceObject,
                         AFSDeleteDirEntry( pObjectInfo->ParentObjectInformation,
                                            pDirCB);
 
-                        if( pObjectInfo->ObjectReferenceCount == 0)
+                        if( pObjectInfo->ObjectReferenceCount <= 0)
                         {
 
                             if( BooleanFlagOn( pObjectInfo->Flags, AFS_OBJECT_INSERTED_HASH_TREE))
@@ -510,15 +510,13 @@ AFSClose( IN PDEVICE_OBJECT LibDeviceObject,
                 else
                 {
 
-                    if( pFcb->Header.NodeTypeCode == AFS_FILE_FCB)
+                    if( pFcb->Header.NodeTypeCode == AFS_FILE_FCB &&
+                        pFcb->Specific.File.ExtentsDirtyCount &&
+                        (pCcb->GrantedAccess & FILE_WRITE_DATA))
                     {
 
-                        if( pFcb->Specific.File.ExtentsDirtyCount)
-                        {
-
-                            AFSFlushExtents( pFcb,
-                                             &pCcb->AuthGroup);
-                        }
+                        AFSFlushExtents( pFcb,
+                                         &pCcb->AuthGroup);
                     }
 
                     AFSReleaseResource( &pFcb->NPFcb->Resource);