AFSCcb *pCcb = NULL;
AFSObjectInfoCB *pObjectInfo = NULL;
AFSDirectoryCB *pDirCB = NULL;
+ LONG lCount;
__try
{
ntStatus = STATUS_SUCCESS;
}
- ASSERT( pDirCB->OpenReferenceCount > 0);
-
- InterlockedDecrement( &pDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirCB->NameInformation.FileName,
pDirCB,
pCcb,
- pDirCB->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
//
// If this is not the root then decrement the open child reference count
AFSReleaseResource( &pFcb->NPFcb->Resource);
- ASSERT( pFcb->OpenReferenceCount != 0);
-
- InterlockedDecrement( &pFcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSClose (IOCtl) Decrement count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
break;
}
ntStatus = STATUS_SUCCESS;
}
- ASSERT( pDirCB->OpenReferenceCount > 0);
-
- InterlockedDecrement( &pDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirCB->NameInformation.FileName,
pDirCB,
pCcb,
- pDirCB->OpenReferenceCount);
+ lCount);
- AFSReleaseResource( &pFcb->NPFcb->Resource);
+ ASSERT( lCount >= 0);
- ASSERT( pFcb->OpenReferenceCount > 0);
+ AFSReleaseResource( &pFcb->NPFcb->Resource);
- InterlockedDecrement( &pFcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSClose (RootAll) Decrement count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
break;
}
AFSAcquireExcl( pObjectInfo->VolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- if ( pDirCB->OpenReferenceCount == 0)
- {
- AFSDbgLogMsg( 0,
- 0,
- "AFSClose (Other) OpenReferenceCount is Zero on DE %08lX Ccb %08lX FileName %wZ\n",
- pDirCB,
- pCcb,
- &pDirCB->NameInformation.FileName);
- }
-
- ASSERT( pDirCB->OpenReferenceCount > 0);
-
- InterlockedDecrement( &pDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirCB->NameInformation.FileName,
pDirCB,
pCcb,
- pDirCB->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
- if( pDirCB->OpenReferenceCount == 0)
+ if( lCount == 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_CLEANUP_PROCESSING,
else
{
- ASSERT( pDirCB->OpenReferenceCount > 0);
-
- InterlockedDecrement( &pDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirCB->NameInformation.FileName,
pDirCB,
pCcb,
- pDirCB->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
}
//
// Decrement the reference count on the Fcb. this is protecting it from teardown.
//
- ASSERT( pFcb->OpenReferenceCount != 0);
-
- InterlockedDecrement( &pFcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSClose Decrement count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
break;
}
AFSPipeOpenCloseRequestCB stPipeClose;
+ pCcb = (AFSCcb *)pIrpSp->FileObject->FsContext2;
+
AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSClose Acquiring Special Share lock %08lX EXCL %08lX\n",
AFSAcquireExcl( &pFcb->NPFcb->Resource,
TRUE);
- pCcb = (AFSCcb *)pIrpSp->FileObject->FsContext2;
-
- pDirCB = pCcb->DirectoryCB;
-
RtlZeroMemory( &stPipeClose,
sizeof( AFSPipeOpenCloseRequestCB));
NULL);
*/
+ pDirCB = pCcb->DirectoryCB;
+
//
// Remove the Ccb and de-allocate it
//
ntStatus = STATUS_SUCCESS;
}
- ASSERT( pDirCB->OpenReferenceCount > 0);
-
- InterlockedDecrement( &pDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pDirCB->NameInformation.FileName,
pDirCB,
pCcb,
- pDirCB->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
//
// If this is not the root then decrement the open child reference count
pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount > 0)
{
- InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount = InterlockedDecrement( &pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSClose (Share) Decrement child open ref count on Parent object %08lX Cnt %d\n",
pObjectInfo->ParentObjectInformation,
- pObjectInfo->ParentObjectInformation->Specific.Directory.ChildOpenReferenceCount);
+ lCount);
}
AFSReleaseResource( &pFcb->NPFcb->Resource);
- ASSERT( pFcb->OpenReferenceCount != 0);
-
- InterlockedDecrement( &pFcb->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pFcb->OpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_FCB_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSClose (Share) Decrement count on Fcb %08lX Cnt %d\n",
pFcb,
- pFcb->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
break;
}
// Need to tear down this entry and rebuild it below
//
- if( pDirNode->OpenReferenceCount == 0)
+ if( pDirNode->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
// Need to tear down this entry and rebuild it below
//
- if( pDirNode->OpenReferenceCount == 0)
+ if( pDirNode->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
UNICODE_STRING uniTargetName;
AFSDirectoryCB *pDirNode = NULL;
ULONG ulCRC = 0;
+ LONG lCount;
LARGE_INTEGER liOldDataVersion;
AFSDeviceExt *pDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
&pResultCB->DirEnum.FileId))
{
- InterlockedIncrement( &pDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirNode->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSNotifyFileCreate Increment count on %wZ DE %p Cnt %d\n",
&pDirNode->NameInformation.FileName,
pDirNode,
- pDirNode->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
*DirNode = pDirNode;
pResultCB->DirEnum.FileId.Vnode,
pResultCB->DirEnum.FileId.Unique);
- if( pDirNode->OpenReferenceCount == 0)
+ if( pDirNode->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
ULONG ulCRC = 0;
BOOLEAN bReleaseParentLock = FALSE, bReleaseTargetParentLock = FALSE;
AFSDeviceExt *pDevExt = (AFSDeviceExt *) AFSRDRDeviceObject->DeviceExtension;
+ LONG lCount;
__Enter
{
&pResultCB->DirEnum.FileId))
{
- InterlockedIncrement( &pDirNode->OpenReferenceCount);
+ 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,
- pDirNode->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
AFSReleaseResource( TargetParentObjectInfo->Specific.Directory.DirectoryNodeHdr.TreeLock);
pResultCB->DirEnum.FileId.Vnode,
pResultCB->DirEnum.FileId.Unique);
- if( pDirNode->OpenReferenceCount == 0)
+ if( pDirNode->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
"AFSCommonCreate Failed to open root Status %08lX\n",
ntStatus);
- lCount = InterlockedDecrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &AFSGlobalRoot->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
AFSGlobalRoot->DirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
try_return( ntStatus);
// Perform in this order to prevent thrashing
//
- lCount = InterlockedIncrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
//
// It is now safe to drop the Reference Count
//
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
if( !NT_SUCCESS( ntStatus))
// Decrement the reference on the parent
//
- lCount = InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pParentDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
try_return( ntStatus);
&pDirectoryCB->NameInformation.FileName,
ntStatus);
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
else
{
"AFSCommonCreate Object name collision on create Status %08lX\n",
ntStatus);
- InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pParentDirectoryCB->NameInformation.FileName,
pParentDirectoryCB,
NULL,
- pParentDirectoryCB->OpenReferenceCount);
+ lCount);
+
+ ASSERT( lCount >= 0);
}
try_return( ntStatus = STATUS_OBJECT_NAME_COLLISION);
// Dereference the parent entry
//
- lCount = InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
try_return( ntStatus);
}
if( pDirectoryCB != NULL)
{
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
else
{
- lCount = InterlockedDecrement( &pParentDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pParentDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
}
"AFSCommonCreate (%08lX) Attempt to open root as delete on close\n",
Irp);
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
try_return( ntStatus = STATUS_CANNOT_DELETE);
}
"AFSCommonCreate (%08lX) Attempt to open root as target directory\n",
Irp);
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
try_return( ntStatus = STATUS_INVALID_PARAMETER);
}
pVolumeCB->ObjectInformation.FileId.Volume,
ntStatus);
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
try_return( ntStatus);
&pDirectoryCB->NameInformation.FileName,
ntStatus);
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
try_return( ntStatus);
&pDirectoryCB->NameInformation.FileName,
ntStatus);
- lCount = InterlockedDecrement( &pDirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryCB,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
try_exit:
&pCcb->DirectoryCB->NameInformation.FileName,
pCcb->DirectoryCB,
pCcb,
- pCcb->DirectoryCB->OpenReferenceCount);
+ lCount = pCcb->DirectoryCB->DirOpenReferenceCount);
- ASSERT( pCcb->DirectoryCB->OpenReferenceCount > 0);
+ ASSERT( lCount >= 0);
pCcb->CurrentDirIndex = 0;
// Decrement the reference added during initialization of the DE
//
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirEntry,
lCount);
+ ASSERT( lCount >= 0);
+
//
// Pull the directory entry from the parent
//
// Reference the directory entry
//
- lCount = InterlockedIncrement( &((*Ccb)->DirectoryCB->OpenReferenceCount));
+ lCount = InterlockedIncrement( &((*Ccb)->DirectoryCB->DirOpenReferenceCount));
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
// is already referenced
//
- lCount = InterlockedDecrement( &ParentDirCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &ParentDirCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
//
// If we created the Fcb we need to release the resources
//
BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_DELETED))
{
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
continue;
}
if( !FlagOn( pObjectInfo->FileAttributes, FILE_ATTRIBUTE_DIRECTORY))
{
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement2 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
continue;
}
NULL))
{
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement3 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
continue;
}
TRUE))
{
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement4 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
continue;
}
pCcb->CurrentDirIndex--;
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement5 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
try_return( ntStatus = STATUS_SUCCESS);
}
Irp,
FileInformationClass);
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement6 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
try_return( ntStatus = STATUS_INVALID_INFO_CLASS);
if( ulBytesConverted < pDirEntry->NameInformation.FileName.Length)
{
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement7 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
try_return( ntStatus = STATUS_BUFFER_OVERFLOW);
}
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSQueryDirectory Decrement8 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ pCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
dStatus = STATUS_SUCCESS;
if( pDirEntry != NULL)
{
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSLocateNextDirEntry Increment count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ Ccb,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
if( pDirEntry != NULL)
{
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSLocateNextDirEntry Increment2 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ Ccb,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
if( pDirEntry != NULL)
{
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSLocateNextDirEntry Increment3 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ Ccb,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
ObjectInfo->FileId.Vnode,
ObjectInfo->FileId.Unique);
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSLocateNextDirEntry Increment4 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ Ccb,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
else
{
PsGetCurrentThread());
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSProcessSetFileExtents Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSProcessSetFileExtents Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
//
// Now locate the Object in this volume
//
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSFindFcbToClean Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
AFSReleaseResource( &pRDRDeviceExt->Specific.RDR.VolumeListLock);
bReleaseVolumeListLock = FALSE;
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSFindFcbToClean Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
if( NULL == LastFcb)
{
PsGetCurrentThread());
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSProcessExtentFailure Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSProcessExtentFailure Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
//
// Now locate the Object in this volume
//
PsGetCurrentThread());
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSProcessReleaseFileExtents Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSProcessReleaseFileExtents Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
//
// Now locate the Object in this volume
//
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitVolume Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
AFSReleaseResource( pDeviceExt->Specific.RDR.VolumeTree.TreeLock);
AFSReleaseResource( &pDeviceExt->Specific.RDR.VolumeListLock);
ASSERT( pTargetParentObject == pTargetDirEntry->ObjectInformation->ParentObjectInformation);
- lCount = InterlockedIncrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pTargetDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetFileLinkInfo Increment count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pTargetDirEntry->NameInformation.FileName,
+ pTargetDirEntry,
+ pSrcCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
if( !pFileLinkInfo->ReplaceIfExists)
{
try_return( ntStatus = STATUS_OBJECT_NAME_COLLISION);
}
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING | AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_ERROR,
"AFSSetFileLinkInfo Target %wZ exists DE %p Count %08lX, performing delete of target\n",
&pTargetDirEntry->NameInformation.FileName,
pTargetDirEntry,
- pTargetDirEntry->OpenReferenceCount);
+ pTargetDirEntry->DirOpenReferenceCount);
//
// Pull the directory entry from the parent
if( pTargetDirEntry != NULL)
{
- lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pTargetDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetFileLinkInfo Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pTargetDirEntry->NameInformation.FileName,
+ pTargetDirEntry,
+ pSrcCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
if( bReleaseTargetDirLock)
ASSERT( pTargetParentObject == pTargetDirEntry->ObjectInformation->ParentObjectInformation);
- lCount = InterlockedIncrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pTargetDirEntry->DirOpenReferenceCount);
+
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetRenameInfo Increment count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pTargetDirEntry->NameInformation.FileName,
+ pTargetDirEntry,
+ pSrcCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
if( !bReplaceIfExists)
{
try_return( ntStatus = STATUS_OBJECT_NAME_COLLISION);
}
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING | AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_ERROR,
"AFSSetRenameInfo Target %wZ exists DE %p Count %08lX, performing delete of target\n",
&pTargetDirEntry->NameInformation.FileName,
pTargetDirEntry,
- pTargetDirEntry->OpenReferenceCount);
+ pTargetDirEntry->DirOpenReferenceCount);
//
// Pull the directory entry from the parent
if( pTargetDirEntry->ObjectInformation->FileType == AFS_FILE_TYPE_FILE &&
pTargetDirEntry->ObjectInformation->Fcb != NULL &&
- pTargetDirEntry->OpenReferenceCount > 1)
+ pTargetDirEntry->DirOpenReferenceCount > 1)
{
pTargetFcb = pTargetDirEntry->ObjectInformation->Fcb;
AFSReleaseResource( &pTargetFcb->NPFcb->Resource);
}
- ASSERT( pTargetDirEntry->OpenReferenceCount > 0);
+ ASSERT( pTargetDirEntry->DirOpenReferenceCount > 0);
+
+ lCount = InterlockedDecrement( &pTargetDirEntry->DirOpenReferenceCount); // The count we added above
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetRenameInfo Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pTargetDirEntry->NameInformation.FileName,
+ pTargetDirEntry,
+ pSrcCcb,
+ lCount);
- lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount); // The count we added above
+ ASSERT( lCount >= 0);
if( lCount == 0)
{
if( pTargetDirEntry != NULL)
{
- lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pTargetDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetRenameInfo Decrement2 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pTargetDirEntry->NameInformation.FileName,
+ pTargetDirEntry,
+ pSrcCcb,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
if( bReleaseTargetDirLock)
PsGetCurrentThread());
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInvalidateAllVolumes Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
while( pVolumeCB != NULL)
{
lCount = InterlockedIncrement( &pNextVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInvalidateAllVolumes Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
AFSReleaseResource( &pRDRDeviceExt->Specific.RDR.VolumeListLock);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInvalidateAllVolumes Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
pVolumeCB = pNextVolumeCB;
}
lCount = InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetVolumeState Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
AFSReleaseResource( &pDevExt->Specific.RDR.VolumeTreeLock);
//
AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSSetVolumeState Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
else
{
//
if( BooleanFlagOn( pCurrentDirEntry->Flags, AFS_DIR_ENTRY_DELETED) &&
- pCurrentDirEntry->OpenReferenceCount == 0)
+ pCurrentDirEntry->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSValidateDirectoryCache Clear VALID flag on DE %p Reference count %08lX\n",
pCurrentDirEntry,
- pCurrentDirEntry->OpenReferenceCount);
+ pCurrentDirEntry->DirOpenReferenceCount);
//
// We pull the short name from the parent tree since it could change below
AFS_TRACE_LEVEL_VERBOSE,
"AFSValidateDirectoryCache Processing INVALID DE %p Reference count %08lX\n",
pCurrentDirEntry,
- pCurrentDirEntry->OpenReferenceCount);
+ pCurrentDirEntry->DirOpenReferenceCount);
- if( pCurrentDirEntry->OpenReferenceCount == 0)
+ if( pCurrentDirEntry->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
pNextDirEntry = (AFSDirectoryCB *)pCurrentDirEntry->ListEntry.fLink;
- if( pCurrentDirEntry->OpenReferenceCount == 0)
+ if( pCurrentDirEntry->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_CLEANUP_PROCESSING,
pNameArray->LinkCount = 0;
- lCount = InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pCurrentElement->DirectoryCB = DirectoryCB->ObjectInformation->VolumeCB->DirectoryCB;
- lCount = InterlockedIncrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pCurrentElement->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
SetFlag( pCurrentElement->Flags, AFS_NAME_ARRAY_FLAG_ROOT_ELEMENT);
}
- lCount = InterlockedIncrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pCurrentElement->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pCurrentElement = &NameArray->ElementArray[ lElement];
- lCount = InterlockedDecrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentElement->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pCurrentElement->DirectoryCB->NameInformation.FileName,
pCurrentElement->DirectoryCB,
lCount);
+
+ ASSERT( lCount >= 0);
}
AFSExFreePoolWithTag( NameArray, AFS_NAME_ARRAY_TAG);
lCount = InterlockedIncrement( &NameArray->Count);
- lCount = InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
DirectoryCB,
lCount);
+ ASSERT( lCount >= 2);
+
pCurrentElement->DirectoryCB = DirectoryCB;
pCurrentElement->Component = DirectoryCB->NameInformation.FileName;
try_return( pCurrentElement);
}
- lCount = InterlockedDecrement( &NameArray->CurrentEntry->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &NameArray->CurrentEntry->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NameArray->CurrentEntry->DirectoryCB,
lCount);
+ ASSERT( lCount >= 0);
+
NameArray->CurrentEntry->DirectoryCB = NULL;
lCount = InterlockedDecrement( &NameArray->Count);
pCurrentElement = &NameArray->ElementArray[ lElement];
- lCount = InterlockedDecrement( &pCurrentElement->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pCurrentElement->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pCurrentElement->DirectoryCB->NameInformation.FileName,
pCurrentElement->DirectoryCB,
lCount);
+
+ ASSERT( lCount >= 0);
}
RtlZeroMemory( NameArray,
NameArray->LinkCount = 0;
- lCount = InterlockedIncrement( &DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pVolumeCB,
lCount);
- lCount = InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
if( pDirectoryEntry != NULL)
{
- lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
else
{
- lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pParentDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
}
// Remove the reference made above
//
- lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
try_exit:
if( pDirEntry != NULL)
pVolumeCB,
lCount);
- lCount = InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
if( pDirectoryEntry != NULL)
{
- lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
else
{
- lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSEvaluateRootEntry Decrement1 count on %wZ DE %p Ccb %p Cnt %d\n",
+ "AFSEvaluateRootEntry Decrement2 count on %wZ DE %p Ccb %p Cnt %d\n",
&pParentDirEntry->NameInformation.FileName,
pParentDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
}
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSEvaluateRootEntry2 Decrement count on volume %08lX Cnt %d\n",
+ "AFSEvaluateRootEntry Decrement2 count on volume %08lX Cnt %d\n",
pVolumeCB,
lCount);
}
lCount = InterlockedDecrement( &AFSGlobalRoot->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeLibrary Increment count on volume %08lX Cnt %d\n",
+ AFSGlobalRoot,
+ lCount);
+
AFSReleaseResource( AFSGlobalRoot->VolumeLock);
try_return( ntStatus);
lCount = InterlockedDecrement( &AFSGlobalRoot->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInitializeLibrary Decrement count on volume %08lX Cnt %d\n",
+ AFSGlobalRoot,
+ lCount);
+
AFSReleaseResource( AFSGlobalRoot->VolumeLock);
AFSReleaseResource( AFSGlobalRoot->ObjectInformation.Fcb->Header.Resource);
lCount = AFSObjectInfoIncrement( pObjectInfo);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSGetObjectStatus Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
else
{
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSGetObjectStatus Decrement count on volume %08lX Cnt %d\n",
+ "AFSGetObjectStatus Decrement2 count on volume %08lX Cnt %d\n",
pVolumeCB,
lCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSGetObjectStatus Increment count on volume %08lX Cnt %d\n",
+ "AFSGetObjectStatus Increment2 count on volume %08lX Cnt %d\n",
pVolumeCB,
lCount);
- lCount = InterlockedIncrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSGetObjectStatus Decrement count on volume %08lX Cnt %d\n",
+ "AFSGetObjectStatus Decrement3 count on volume %08lX Cnt %d\n",
pVolumeCB,
lCount);
}
if( pDirectoryEntry != NULL)
{
- lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirectoryEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
else
{
- lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pParentDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
}
// Remove the reference made above
//
- lCount = InterlockedDecrement( &pDirectoryEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirectoryEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSGetObjectStatus Decrement3 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirectoryEntry->NameInformation.FileName,
+ pDirectoryEntry,
+ NULL,
+ lCount);
+
+ ASSERT( lCount >= 0);
pObjectInfo = pDirectoryEntry->ObjectInformation;
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSRetrieveFileAttributes Decrement2 count on volume %08lX Cnt %d\n",
+ "AFSGetObjectStatus Decrement4 count on volume %08lX Cnt %d\n",
pVolumeCB,
- pVolumeCB->VolumeReferenceCount);
+ lCount);
}
}
if( pDirEntry != NULL)
{
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSCheckSymlinkAccess Increment count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ NULL,
+ lCount);
+
+ ASSERT( lCount >= 0);
}
AFSReleaseResource( ParentDirectoryCB->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
ntStatus = STATUS_REPARSE_POINT_NOT_RESOLVED;
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSCheckSymlinkAccess Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ NULL,
+ lCount);
+
+ ASSERT( lCount >= 0);
try_exit:
uniSearchName.Length = uniSearchName.MaximumLength = 0;
uniSearchName.Buffer = NULL;
- ASSERT( pCurrentVolume->VolumeReferenceCount > 1);
-
while( TRUE)
{
+ ASSERT( pCurrentVolume->VolumeReferenceCount > 1);
+
+ ASSERT( pDirEntry->DirOpenReferenceCount > 0);
+
//
// Check our total link count for this name array
//
// Dereference the current entry ..
//
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
//
// OK, need to back up one entry for the correct parent since the current
// entry we are on is the symlink itself
// Increment our reference on this dir entry
//
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
// Dereference our current dir entry
//
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
pDirEntry = pCurrentVolume->DirectoryCB;
//
// Reference the new dir entry
//
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
AFS_TRACE_LEVEL_VERBOSE,
"AFSLocateNameEntry Decrement2 count on volume %08lX Cnt %d\n",
pCurrentVolume,
- pCurrentVolume->VolumeReferenceCount);
+ lCount);
ntStatus = AFSBuildMountPointTarget( AuthGroup,
pDirEntry,
// Deref and ref count the entries
//
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
pDirEntry = pCurrentVolume->DirectoryCB;
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
//
// Need to back up one entry in the name array
//
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
pDirEntry = AFSBackupEntry( NameArray);
if( pDirEntry == NULL)
try_return(ntStatus = STATUS_OBJECT_PATH_INVALID);
}
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSLocateNameEntry Increment4 count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ NULL,
+ lCount);
if( BooleanFlagOn( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_ROOT_VOLUME))
{
ASSERT( pParentDirEntry != pDirEntry);
}
- AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
- AFS_TRACE_LEVEL_VERBOSE,
- "AFSLocateNameEntry Increment4 count on %wZ DE %p Ccb %p Cnt %d\n",
- &pDirEntry->NameInformation.FileName,
- pDirEntry,
- NULL,
- pDirEntry->OpenReferenceCount);
-
uniPathName = uniRemainingPath;
continue;
// Increment our dir entry ref count since we will decrement it on exit
//
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
// Increment our dir entry ref count
//
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
AFSAcquireExcl( pCurrentObject->VolumeCB->ObjectInfoTree.TreeLock,
TRUE);
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSLocateNameEntry Decrement count on %wZ DE %p Ccb %p Cnt %d\n",
+ &pDirEntry->NameInformation.FileName,
+ pDirEntry,
+ NULL,
+ lCount);
+
+ ASSERT( lCount >= 0);
- if( lCount == 0)
+ if( lCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING|AFS_SUBSYSTEM_CLEANUP_PROCESSING,
// Decrement the previous parent
//
- lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
//
// If we ended up substituting a name in the component then update
// the full path and update the pointers
if( pDirEntry != NULL)
{
- lCount = InterlockedDecrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
else if( pParentDirEntry != NULL)
{
- lCount = InterlockedDecrement( &pParentDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pParentDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pParentDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
if( bReleaseCurrentVolume)
&(*ParentDirectoryCB)->NameInformation.FileName,
*ParentDirectoryCB,
NULL,
- (*ParentDirectoryCB)->OpenReferenceCount);
+ (*ParentDirectoryCB)->DirOpenReferenceCount);
}
if( *DirectoryCB != NULL)
&(*DirectoryCB)->NameInformation.FileName,
*DirectoryCB,
NULL,
- (*DirectoryCB)->OpenReferenceCount);
+ (*DirectoryCB)->DirOpenReferenceCount);
}
}
AFSDeleteDirEntry( ParentObjectInfo,
pDirNode);
- lCount = InterlockedIncrement( &pExistingDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pExistingDirNode->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
// Need to tear down this entry and rebuild it below
//
- if( pExistingDirNode->OpenReferenceCount == 0)
+ if( pExistingDirNode->DirOpenReferenceCount <= 0)
{
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
pDirNode,
TRUE);
- lCount = InterlockedIncrement( &pDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirNode->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
__Enter
{
- AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+ AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING | AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
- "AFSDeleteDirEntry Deleting dir entry in parent %08lX Entry %08lX %wZ FID %08lX-%08lX-%08lX-%08lX\n",
+ "AFSDeleteDirEntry Deleting dir entry in parent %08lX Entry %08lX %wZ FID %08lX-%08lX-%08lX-%08lX RefCount %08lX\n",
ParentObjectInfo,
DirEntry,
&DirEntry->NameInformation.FileName,
DirEntry->ObjectInformation->FileId.Cell,
DirEntry->ObjectInformation->FileId.Volume,
DirEntry->ObjectInformation->FileId.Vnode,
- DirEntry->ObjectInformation->FileId.Unique);
+ DirEntry->ObjectInformation->FileId.Unique,
+ DirEntry->DirOpenReferenceCount);
+
+ ASSERT( DirEntry->DirOpenReferenceCount == 0);
AFSRemoveDirNodeFromParent( ParentObjectInfo,
DirEntry,
*ParentDirectoryCB = pDirEntry;
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSParseName (%08lX) Returning global root access\n",
Irp);
- lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSParseName (%08lX) Returning global root access\n",
Irp);
- lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSParseName (%08lX) Returning root PIOCtl access\n",
Irp);
- lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &AFSGlobalRoot->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
ClearFlag( *ParseFlags, AFS_PARSE_FLAG_ROOT_ACCESS);
- lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
uniRemainingPath.Length += sizeof( WCHAR);
uniRemainingPath.MaximumLength += sizeof( WCHAR);
- lCount = InterlockedIncrement( &pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
&pVolumeCB->DirectoryCB->NameInformation.FileName,
pVolumeCB->DirectoryCB,
NULL,
- lCount = pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount);
//
// Pass back the parent being the volume root
&(*ParentDirectoryCB)->NameInformation.FileName,
*ParentDirectoryCB,
NULL,
- (*ParentDirectoryCB)->OpenReferenceCount);
+ (*ParentDirectoryCB)->DirOpenReferenceCount);
}
}
*ShareDirEntry = pVolumeCB->DirectoryCB;
- lCount = InterlockedIncrement( &pVolumeCB->DirectoryCB->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pVolumeCB->DirectoryCB->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
lCount);
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSCheckCellName Increment count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
}
else
{
AFSGlobalRoot->ObjectInformation.FileId.Vnode,
AFSGlobalRoot->ObjectInformation.FileId.Unique);
- lCount = InterlockedIncrement( &pDirNode->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pDirNode->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSBuildMountPoint Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
AFSReleaseResource( pVolumeCB->VolumeLock);
try_return( ntStatus);
//
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
- AFS_TRACE_LEVEL_VERBOSE_2,
+ AFS_TRACE_LEVEL_VERBOSE_2,
"AFSBuildRootVolume Initializing root for FID %08lX-%08lX-%08lX-%08lX\n",
FileId->Cell,
FileId->Volume,
lCount = InterlockedDecrement( &pVolumeCB->VolumeReferenceCount);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSBuildRootVolume Decrement count on volume %08lX Cnt %d\n",
+ pVolumeCB,
+ lCount);
+
AFSReleaseResource( pVolumeCB->VolumeLock);
try_return( ntStatus);
}
}
- lCount = InterlockedIncrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedIncrement( &pShareDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pDirEntry = (AFSDirectoryCB *)pDirEntry->ListEntry.fLink;
}
- lCount = InterlockedDecrement( &pTargetDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pTargetDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
NULL,
lCount);
+ ASSERT( lCount >= 0);
+
*CopiedLength = ulCopiedLength;
AFSReleaseResource( pTargetDirEntry->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock);
if( pShareDirEntry != NULL)
{
- lCount = InterlockedDecrement( &pShareDirEntry->OpenReferenceCount);
+ lCount = InterlockedDecrement( &pShareDirEntry->DirOpenReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
pShareDirEntry,
NULL,
lCount);
+
+ ASSERT( lCount >= 0);
}
}
TRUE);
if( pVolumeCB->ObjectInfoListHead == NULL &&
- pVolumeCB->DirectoryCB->OpenReferenceCount == 0 &&
+ pVolumeCB->DirectoryCB->DirOpenReferenceCount <= 0 &&
pVolumeCB->VolumeReferenceCount == 1 &&
( pVolumeCB->RootFcb == NULL ||
pVolumeCB->RootFcb->OpenReferenceCount == 0) &&
while( pCurrentDirEntry != NULL)
{
- if( pCurrentDirEntry->OpenReferenceCount > 0 ||
+ if( pCurrentDirEntry->DirOpenReferenceCount > 0 ||
( pCurrentDirEntry->ObjectInformation->Fcb != NULL &&
pCurrentDirEntry->ObjectInformation->Fcb->OpenReferenceCount > 0) ||
liCurrentTime.QuadPart <= pCurrentDirEntry->ObjectInformation->LastAccessCount.QuadPart ||
while( pCurrentDirEntry != NULL)
{
- if( pCurrentDirEntry->OpenReferenceCount > 0 ||
+ if( pCurrentDirEntry->DirOpenReferenceCount > 0 ||
( pCurrentDirEntry->ObjectInformation->Fcb != NULL &&
pCurrentDirEntry->ObjectInformation->Fcb->OpenReferenceCount > 0) ||
liCurrentTime.QuadPart <= pCurrentDirEntry->ObjectInformation->LastAccessCount.QuadPart ||
pFcb = NULL;
- AFSDbgLogMsg( AFS_SUBSYSTEM_CLEANUP_PROCESSING,
+ AFSDbgLogMsg( AFS_SUBSYSTEM_CLEANUP_PROCESSING | AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSPrimaryVolumeWorkerThread Deleting DE %wZ Object %08lX\n",
&pCurrentDirEntry->NameInformation.FileName,
// for tear down
//
- LONG OpenReferenceCount;
+ LONG DirOpenReferenceCount;
//
// File index used in directory enumerations