ASSERT( ExIsResourceAcquiredExclusiveLite( ObjectInfoCB->Specific.Directory.DirectoryNodeHdr.TreeLock));
+ if( BooleanFlagOn( ObjectInfoCB->Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED))
+ {
+
+ try_return( ntStatus = STATUS_SUCCESS);
+ }
+
uniGUID.Length = 0;
uniGUID.MaximumLength = 0;
uniGUID.Buffer = NULL;
AFSExFreePoolWithTag( pBuffer, AFS_DIR_BUFFER_TAG);
}
- //
- // If the processing failed then we should reset the directory content in the event
- // it is re-enumerated
- //
+ if ( NT_SUCCESS( ntStatus))
+ {
- if( !NT_SUCCESS( ntStatus))
+ SetFlag( ObjectInfoCB->Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED);
+ }
+ else
{
+ //
+ // If the processing failed then we should reset the directory
+ // content in the event it is re-enumerated
+ //
+
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSEnumerateDirectory Resetting content for FID %08lX-%08lX-%08lX-%08lX Status %08lX\n",
AFSAcquireExcl( VolumeCB->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock,
TRUE);
- if( !BooleanFlagOn( VolumeCB->ObjectInformation.Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED))
- {
-
- ntStatus = AFSEnumerateDirectory( AuthGroup,
- &VolumeCB->ObjectInformation,
- TRUE);
-
- if( !NT_SUCCESS( ntStatus))
- {
+ ntStatus = AFSEnumerateDirectory( AuthGroup,
+ &VolumeCB->ObjectInformation,
+ TRUE);
- AFSReleaseResource( VolumeCB->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock);
+ if( !NT_SUCCESS( ntStatus))
+ {
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
- AFS_TRACE_LEVEL_ERROR,
- "AFSOpenRoot (%p) Failed to enumerate directory Status %08lX\n",
- Irp,
- ntStatus);
+ AFSReleaseResource( VolumeCB->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock);
- try_return( ntStatus);
- }
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFS_TRACE_LEVEL_ERROR,
+ "AFSOpenRoot (%p) Failed to enumerate directory Status %08lX\n",
+ Irp,
+ ntStatus);
- SetFlag( VolumeCB->ObjectInformation.Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED);
+ try_return( ntStatus);
}
AFSReleaseResource( VolumeCB->ObjectInformation.Specific.Directory.DirectoryNodeHdr.TreeLock);
try_return( ntStatus);
}
-
- SetFlag( pFcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED);
}
else if( BooleanFlagOn( pFcb->ObjectInformation->Flags, AFS_OBJECT_FLAGS_VERIFY))
{
pDirGlobalDirNode = AFSGlobalRoot->ObjectInformation.Specific.Directory.DirectoryNodeListHead;
- //
- // Indicate the node is initialized
- //
-
- SetFlag( AFSGlobalRoot->ObjectInformation.Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED);
-
uniFullName.MaximumLength = PAGE_SIZE;
uniFullName.Length = 0;
try_return( ntStatus);
}
-
- SetFlag( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED);
}
AFSReleaseResource( pCurrentObject->Specific.Directory.DirectoryNodeHdr.TreeLock);