KDFS-windows-afs-rdr-kernel-20081208
authorPeter Scott <pscott@kerneldrivers.com>
Mon, 8 Dec 2008 17:03:12 +0000 (17:03 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 8 Dec 2008 17:03:12 +0000 (17:03 +0000)
commit7ab2853d39b990b5e98213db186ba171b636218a
tree706261f627b3e8673c364f2343e2a8c5e7947e97
parent513fae1e70325747b5f8d5ed1bedfa1c22491a4e
KDFS-windows-afs-rdr-kernel-20081208

LICENSE BSD

(jaltman@secure-endpoints.com contributed
to these changes.)

Add QueueCount to the AFSCommRequestBlock.
This number is an estimate of the number of
outstanding requests the file system has
to send to the afs cache manager.  This
value can be used in the future to dynamically
adjust the worker thread pool size based upon
the observed need.

Add debugging to AFSEnumerateDirectory.

Add assertions to ensure that VolumeInformation
is only accessed for Fcbs that are root volume
objects (vnode = 1, unique = 1).

The AFS Global Root Fcb is a root volume.  Set
the vnode,unique pair to indicate that.

If an AFSEnumerateDirectory call is interrupted,
reset the directory contents.

Do not initialize the DirtyEntentsList without
holding the lock resource.

When waiting for an extent, periodically timeout
the wait and re-issue the request to the cache
manager.  There is a potential race in low extent
count scenarios where an extent can be assigned
to the file system and released back to the AFS
cache manager before the requesting thread has
a chance to use the required extent.

Use IsListEmpty() instead of relying on the
return value to RemoveHeadList() to indicate
that the list is empty.

Reorder the acquisition of the NPDirNode and Fcb
locks in AFSValidateEntry to avoid a deadlock.
12 files changed:
src/WINNT/afsrdr/kernel/AFSBTreeSupport.cpp
src/WINNT/afsrdr/kernel/AFSCommSupport.cpp
src/WINNT/afsrdr/kernel/AFSCreate.cpp
src/WINNT/afsrdr/kernel/AFSExtentsSupport.cpp
src/WINNT/afsrdr/kernel/AFSFcbSupport.cpp
src/WINNT/afsrdr/kernel/AFSFileInfo.cpp
src/WINNT/afsrdr/kernel/AFSGeneric.cpp
src/WINNT/afsrdr/kernel/AFSNameSupport.cpp
src/WINNT/afsrdr/kernel/AFSVolumeInfo.cpp
src/WINNT/afsrdr/kernel/AFSWrite.cpp
src/WINNT/afsrdr/kernel/include/AFSCommon.h
src/WINNT/afsrdr/kernel/include/AFSStructs.h