From f499babad036b9efc4c5f0aab252cfadcfb0c22f Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 29 Nov 2012 03:13:11 -0500 Subject: [PATCH] Windows: Dir Enum only validate when necessary During a directory enumeration, do not call AFSValidateEntry() for every DirectoryCB. Instead only do so when the AFS_OBJECT_FLAGS_VERIFY is set on the ObjectInformationCB. Change-Id: I5653cbf8703da03aeaee24c0c7bf8817e66b8f9e Reviewed-on: http://gerrit.openafs.org/8567 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp b/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp index 2ac140e85..c76bd74ea 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp @@ -782,10 +782,24 @@ AFSQueryDirectory( IN PIRP Irp) // We don't worry about entries while enumerating the directory // - AFSValidateEntry( pDirEntry, - &pCcb->AuthGroup, - FALSE, - FALSE); + if ( BooleanFlagOn( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_VERIFY)) + { + + ntStatus = AFSValidateEntry( pDirEntry, + &pCcb->AuthGroup, + FALSE, + FALSE); + if ( NT_SUCCESS( ntStatus)) + { + + ClearFlag( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_VERIFY); + } + else + { + + ntStatus = STATUS_SUCCESS; + } + } pObjectInfo = pDirEntry->ObjectInformation; -- 2.39.5