Windows: Permit direct to service non-wildcard lookups
authorPeter Scott <pscott@kerneldrivers.com>
Fri, 15 Feb 2013 13:44:06 +0000 (08:44 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Sat, 23 Feb 2013 08:21:07 +0000 (00:21 -0800)
commitb7ba97ad537bd0e9a241f052ddd1c3a50c74745b
tree93982b4555aa231fcdf07b1f7f1e89d9e64ea4b2
parent0dd623ea9a933091ea9f9624558885ec6961b0f1
Windows: Permit direct to service non-wildcard lookups

The AFS redirector has required that directories be fully enumerated
when the directory object is opened.  This is a very expensive
operation involving large numbers of file server RPC round trips for
directories with tens of thousands of objects and those containing
symlinks.

This patchset delays directory enumeration for the last component
in a path until such time as dirctory data is requested by the
application.  If the request is for a non-wildcard pattern, the
service will be asked to provide the details for just the one required
object.

Delaying the directory enumeration improves performance for
GetFileAttributes[Ex], GetDiskFreeSpace[Ex], GetVolumeInformation,
and GetNamedSecurityInfo Win32 API calls.   In those cases it is
no longer necessary to enumerate the target directory at all.

Change-Id: I7ef2fbafff925697d8b40e56837ef53bfcc78542
Reviewed-on: http://gerrit.openafs.org/9118
Reviewed-by: Peter Scott <pscott@kerneldrivers.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp
src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp
src/WINNT/afsrdr/kernel/lib/Include/AFSCommon.h
src/WINNT/afsrdr/kernel/lib/Include/AFSDefines.h