Windows: AFSPerformObjectInvalidate hold TreeLock
authorJeffrey Altman <jaltman@your-file-system.com>
Sat, 13 Apr 2013 05:56:39 +0000 (01:56 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Fri, 26 Apr 2013 13:23:51 +0000 (06:23 -0700)
When decrementing the ObjectInfoCB reference count hold the Volume's
ObjectInfoTree.TreeLock shared.

Change-Id: I6ac2fe3cc19bcc97a2a6e38f2e1a4b3d0952b304
Reviewed-on: http://gerrit.openafs.org/9785
Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp

index 42770e6..3bed1dc 100644 (file)
@@ -9468,6 +9468,9 @@ AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo,
         // or AFSQueueInvalidateObject
         //
 
+        AFSAcquireShared( ObjectInfo->VolumeCB->ObjectInfoTree.TreeLock,
+                          TRUE);
+
         lCount = AFSObjectInfoDecrement( ObjectInfo,
                                          AFS_OBJECT_REFERENCE_INVALIDATION);
 
@@ -9476,6 +9479,8 @@ AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo,
                       "AFSPerformObjectInvalidation Decrement count on object %p Cnt %d\n",
                       ObjectInfo,
                       lCount));
+
+        AFSReleaseResource( ObjectInfo->VolumeCB->ObjectInfoTree.TreeLock);
     }
 
     return ntStatus;