pVolumeCB = ParentDirectoryCB->ObjectInformation->VolumeCB;
- AFSAcquireShared( pVolumeCB->VolumeLock,
- TRUE);
-
pParentDirEntry = ParentDirectoryCB;
}
else
pVolumeCB = AFSGlobalRoot;
- AFSAcquireShared( pVolumeCB->VolumeLock,
- TRUE);
-
pParentDirEntry = AFSGlobalRoot->DirectoryCB;
}
"AFSRetrieveFileAttributes Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
pVolumeCB->VolumeReferenceCount);
-
- AFSReleaseResource( pVolumeCB->VolumeLock);
}
if( pDirectoryEntry != NULL)
"AFSRetrieveFileAttributes Decrement2 count on volume %08lX Cnt %d\n",
pVolumeCB,
pVolumeCB->VolumeReferenceCount);
-
- AFSReleaseResource( pVolumeCB->VolumeLock);
}
if( pNameArray != NULL)
pVolumeCB = AFSGlobalRoot;
- AFSAcquireShared( pVolumeCB->VolumeLock,
- TRUE);
-
pParentDirEntry = AFSGlobalRoot->DirectoryCB;
InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
"AFSEvaluateRootEntry Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
pVolumeCB->VolumeReferenceCount);
-
- AFSReleaseResource( pVolumeCB->VolumeLock);
}
if( pDirectoryEntry != NULL)
"AFSEvaluateRootEntry2 Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
pVolumeCB->VolumeReferenceCount);
-
- AFSReleaseResource( pVolumeCB->VolumeLock);
}
if( pNameArray != NULL)
pVolumeCB = AFSGlobalRoot;
- AFSAcquireShared( pVolumeCB->VolumeLock,
- TRUE);
-
pParentDirEntry = AFSGlobalRoot->DirectoryCB;
//
"AFSGetObjectStatus Decrement count on volume %08lX Cnt %d\n",
pVolumeCB,
pVolumeCB->VolumeReferenceCount);
-
- AFSReleaseResource( pVolumeCB->VolumeLock);
}
if( pDirectoryEntry != NULL)
"AFSRetrieveFileAttributes Decrement2 count on volume %08lX Cnt %d\n",
pVolumeCB,
pVolumeCB->VolumeReferenceCount);
-
- AFSReleaseResource( pVolumeCB->VolumeLock);
}
}
pCurrentVolume,
pCurrentVolume->VolumeReferenceCount);
- AFSReleaseResource( pCurrentVolume->VolumeLock);
-
pCurrentVolume = AFSGlobalRoot;
- AFSAcquireShared( pCurrentVolume->VolumeLock,
- TRUE);
-
InterlockedIncrement( &pCurrentVolume->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
pCurrentVolume,
pCurrentVolume->VolumeReferenceCount);
- AFSReleaseResource( pCurrentVolume->VolumeLock);
-
ntStatus = AFSBuildMountPointTarget( AuthGroup,
pDirEntry,
&pCurrentVolume);
ASSERT( pCurrentVolume->VolumeReferenceCount > 1);
- ASSERT( ExIsResourceAcquiredLite( pCurrentVolume->VolumeLock));
-
//
// Replace the current name for the mp with the volume root of the target
//
ASSERT( pCurrentVolume->VolumeReferenceCount > 1);
- ASSERT( ExIsResourceAcquiredLite( pCurrentVolume->VolumeLock));
-
InterlockedDecrement( &pCurrentVolume->VolumeReferenceCount);
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
"AFSLocateNameEntry Decrement3 count on volume %08lX Cnt %d\n",
pCurrentVolume,
pCurrentVolume->VolumeReferenceCount);
-
- AFSReleaseResource( pCurrentVolume->VolumeLock);
}
if( RootPathName->Buffer != uniFullPathName.Buffer)
*FileName = pIrpSp->FileObject->FileName;
//
- // Grab the root node exclusive before returning
+ // Grab the root node while checking state
//
- AFSAcquireExcl( pVolumeCB->VolumeLock,
- TRUE);
+ AFSAcquireShared( pVolumeCB->VolumeLock,
+ TRUE);
if( BooleanFlagOn( pVolumeCB->ObjectInformation.Flags, AFS_OBJECT_FLAGS_OBJECT_INVALID) ||
BooleanFlagOn( pVolumeCB->Flags, AFS_VOLUME_FLAGS_OFFLINE))
}
}
- AFSConvertToShared( pVolumeCB->VolumeLock);
+ AFSReleaseResource( pVolumeCB->VolumeLock);
if( BooleanFlagOn( pDirEntry->ObjectInformation->Flags, AFS_OBJECT_FLAGS_VERIFY))
{
pDirEntry->ObjectInformation->FileId.Unique,
ntStatus);
- AFSReleaseResource( pVolumeCB->VolumeLock);
-
try_return( ntStatus);
}
}
"AFSParseName (%08lX) Failed to allocate full name buffer\n",
Irp);
- AFSReleaseResource( pVolumeCB->VolumeLock);
-
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
AFSExFreePool( uniFullName.Buffer);
- AFSReleaseResource( pVolumeCB->VolumeLock);
-
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
AFSExFreePool( uniFullName.Buffer);
- AFSReleaseResource( pVolumeCB->VolumeLock);
-
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
AFSExFreePool( uniFullName.Buffer);
- AFSReleaseResource( pVolumeCB->VolumeLock);
-
try_return( ntStatus);
}
// Be sure we are online and ready to go
//
- AFSAcquireExcl( AFSGlobalRoot->VolumeLock,
- TRUE);
+ AFSAcquireShared( AFSGlobalRoot->VolumeLock,
+ TRUE);
if( BooleanFlagOn( AFSGlobalRoot->ObjectInformation.Flags, AFS_OBJECT_FLAGS_OBJECT_INVALID) ||
BooleanFlagOn( AFSGlobalRoot->Flags, AFS_VOLUME_FLAGS_OFFLINE))
}
}
+ AFSReleaseResource( AFSGlobalRoot->VolumeLock);
+
if( !BooleanFlagOn( AFSGlobalRoot->ObjectInformation.Flags, AFS_OBJECT_FLAGS_DIRECTORY_ENUMERATED))
{
Irp,
ntStatus);
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
-
try_return( ntStatus);
}
}
NULL,
AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
-
*VolumeCB = NULL;
FileName->Length = 0;
NULL,
AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
-
*VolumeCB = NULL;
FileName->Length = 0;
NULL,
AFSGlobalRoot->DirectoryCB->OpenReferenceCount);
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
-
ClearFlag( *ParseFlags, AFS_PARSE_FLAG_ROOT_ACCESS);
*VolumeCB = NULL;
Irp,
&uniComponentName);
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
-
//
// Add in the full share name to pass back
//
if( !NT_SUCCESS( ntStatus))
{
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
if ( bIsAllShare &&
uniRemainingPath.Length == 0 &&
*ParentDirectoryCB = pVolumeCB->DirectoryCB;
}
- //
- // We only need the volume shared at this point
- //
-
- AFSConvertToShared( pVolumeCB->VolumeLock);
-
//
// Init our name array
//
"AFSParseName (%08lX) Failed to initialize name array\n",
Irp);
- AFSReleaseResource( pVolumeCB->VolumeLock);
-
try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES);
}
if( *VolumeCB != NULL)
{
-
ASSERT( (*VolumeCB)->VolumeReferenceCount > 1);
}
pDirEnumEntry->FileId.Volume != AFSGlobalRoot->ObjectInformation.FileId.Volume)
{
- //
- // We have the global root on entry so drop it now
- //
-
- AFSReleaseResource( AFSGlobalRoot->VolumeLock);
-
//
// Build the root volume entry
//
if( !NT_SUCCESS( ntStatus))
{
-
- //
- // On failure this routine is expecting to hold the global root
- //
-
- AFSAcquireShared( AFSGlobalRoot->VolumeLock,
- TRUE);
-
try_return( ntStatus);
}
AFSReleaseResource( &pVolumeCB->RootFcb->NPFcb->Resource);
}
- AFSConvertToShared( pVolumeCB->VolumeLock);
-
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE_2,
"AFSBuildMountPointTarget Evaluated target of %wZ FID %08lX-%08lX-%08lX-%08lX as root volume\n",
InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ AFSReleaseResource( pVolumeCB->VolumeLock);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSBuildMountPointTarget Increment count on volume %08lX Cnt %d\n",
AFSReleaseResource( &pVolumeCB->RootFcb->NPFcb->Resource);
}
- AFSConvertToShared( pVolumeCB->VolumeLock);
-
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_VERBOSE_2,
"AFSBuildRootVolume Evaluated target of %wZ FID %08lX-%08lX-%08lX-%08lX as root volume\n",
InterlockedIncrement( &pVolumeCB->VolumeReferenceCount);
+ AFSReleaseResource( pVolumeCB->VolumeLock);
+
AFSDbgLogMsg( AFS_SUBSYSTEM_VOLUME_REF_COUNTING,
AFS_TRACE_LEVEL_VERBOSE,
"AFSBuildRootVolume Increment count on volume %08lX Cnt %d\n",