diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index e25dc985e9..abc2d200fc 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -7050,10 +7050,19 @@ AFSCleanupFcb( IN AFSFcb *Fcb, // First up are there dirty extents in the cache to flush? // - if( ForceFlush || - ( !BooleanFlagOn( Fcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_OBJECT_INVALID) && - !BooleanFlagOn( Fcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DELETED) && - ( Fcb->Specific.File.ExtentsDirtyCount || + if( BooleanFlagOn( Fcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_OBJECT_INVALID) || + BooleanFlagOn( Fcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DELETED)) + { + + // + // The file has been marked as invalid. Dump it + // + + AFSTearDownFcbExtents( Fcb, + NULL); + } + else if( ForceFlush || + ( ( Fcb->Specific.File.ExtentsDirtyCount || Fcb->Specific.File.ExtentCount) && (liTime.QuadPart - Fcb->Specific.File.LastServerFlush.QuadPart) >= pControlDeviceExt->Specific.Control.FcbFlushTimeCount.QuadPart)) @@ -7067,17 +7076,6 @@ AFSCleanupFcb( IN AFSFcb *Fcb, NULL); } } - else if( BooleanFlagOn( Fcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_OBJECT_INVALID) || - BooleanFlagOn( Fcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DELETED)) - { - - // - // The file has been marked as invalid. Dump it - // - - AFSTearDownFcbExtents( Fcb, - NULL); - } // // If there are extents and they haven't been used recently *and*