From 479f35832515c3235865e0e286d0fd5e5e406d47 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 29 Dec 2012 00:40:25 -0500 Subject: [PATCH] Windows: AFSNotifyHardLink() DirOpenReferenceCount handling This patchset consolidates the releasing of the DirOpenReferenceCount within AFSNotifyHardLink() into the try_exit block. This clarifies the logic and avoids duplicate code blocks. Change-Id: I7bf7e5af55646ea570c76e36a673900521a3582c Reviewed-on: http://gerrit.openafs.org/8856 Reviewed-by: Derrick Brashear Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- .../afsrdr/kernel/lib/AFSCommSupport.cpp | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp index 8563a599e..fb69008bd 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp @@ -2240,19 +2240,6 @@ AFSNotifyHardLink( IN AFSObjectInfoCB *ObjectInfo, &pResultCB->DirEnum.FileId)) { - lCount = InterlockedIncrement( &pDirNode->DirOpenReferenceCount); - - AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING, - AFS_TRACE_LEVEL_VERBOSE, - "AFSNotifyHardLink Increment count on %wZ DE %p Cnt %d\n", - &pDirNode->NameInformation.FileName, - pDirNode, - lCount); - - ASSERT( lCount >= 0); - - AFSReleaseResource( TargetParentObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock); - try_return( ntStatus = STATUS_REPARSE); } else @@ -2360,8 +2347,6 @@ AFSNotifyHardLink( IN AFSObjectInfoCB *ObjectInfo, TargetParentObjectInfo->DataVersion.QuadPart = (ULONGLONG)-1; - AFSReleaseResource( TargetParentObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock); - try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES); } @@ -2429,6 +2414,23 @@ AFSNotifyHardLink( IN AFSObjectInfoCB *ObjectInfo, try_exit: + if ( TargetDirectoryCB != NULL) + { + + lCount = InterlockedIncrement( &pDirNode->DirOpenReferenceCount); + + AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSNotifyHardLink Increment count on %wZ DE %p Cnt %d\n", + &pDirNode->NameInformation.FileName, + pDirNode, + lCount); + + ASSERT( lCount >= 0); + + *TargetDirectoryCB = pDirNode; + } + if ( bReleaseTargetParentLock) { @@ -2446,12 +2448,6 @@ try_exit: AFSExFreePoolWithTag( pHardLinkCB, AFS_HARDLINK_REQUEST_TAG); } - - if ( TargetDirectoryCB) - { - - *TargetDirectoryCB = pDirNode; - } } return ntStatus; -- 2.39.5