{
case AFS_DIRECTORY_FCB:
- {
-
- KeSetEvent( &Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent,
- 0,
- FALSE);
-
- lCount = InterlockedIncrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
-
- break;
- }
-
case AFS_ROOT_FCB:
case AFS_ROOT_ALL:
{
- KeSetEvent( &Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent,
- 0,
- FALSE);
-
lCount = InterlockedIncrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
break;
{
case AFS_DIRECTORY_FCB:
- {
-
- ASSERT( Fcb->NPFcb->Specific.Directory.DirectoryEnumCount > 0);
-
- lCount = InterlockedDecrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
-
- if( lCount == 0)
- {
-
- KeClearEvent( &Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent);
- }
-
- break;
- }
-
case AFS_ROOT_FCB:
case AFS_ROOT_ALL:
{
lCount = InterlockedDecrement( &Fcb->NPFcb->Specific.Directory.DirectoryEnumCount);
- if( lCount == 0)
- {
-
- KeClearEvent( &Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent);
- }
-
break;
}
}
try_return( bIsInProcess);
}
- //
- // Depending on the type of node, set the event
- //
-
switch( ObjectInfo->Fcb->Header.NodeTypeCode)
{
case AFS_DIRECTORY_FCB:
- {
-
- if( KeReadStateEvent( &ObjectInfo->Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent))
- {
-
- bIsInProcess = TRUE;
- }
-
- break;
- }
-
case AFS_ROOT_FCB:
case AFS_ROOT_ALL:
{
- if( KeReadStateEvent( &ObjectInfo->Fcb->NPFcb->Specific.Directory.DirectoryEnumEvent))
+ if( ObjectInfo->Fcb->NPFcb->Specific.Directory.DirectoryEnumCount > 0)
{
bIsInProcess = TRUE;
AFSAcquireExcl( &ObjectInfo->Fcb->NPFcb->Resource,
TRUE);
- AFSLockForExtentsTrim( ObjectInfo->Fcb);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSPerformObjectInvalidate Acquiring Fcb extents lock %08lX EXCL %08lX\n",
+ &ObjectInfo->Fcb->NPFcb->Specific.File.ExtentsResource,
+ PsGetCurrentThread());
+
+ AFSAcquireShared( &ObjectInfo->Fcb->NPFcb->Specific.File.ExtentsResource,
+ TRUE);
__try
{