{
pParentObjectInfo = AFSFindObjectInfo( pObjectInfo->VolumeCB,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ FALSE);
}
pRootFcb = pObjectInfo->VolumeCB->RootFcb;
{
pParentObjectInfo = AFSFindObjectInfo( pObjectInfo->VolumeCB,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ FALSE);
}
if( pParentObjectInfo != NULL &&
{
pParentObjectInfo = AFSFindObjectInfo( pObjectInfo->VolumeCB,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ FALSE);
}
//
{
pParentObjectInfo = AFSFindObjectInfo( pObjectInfo->VolumeCB,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ FALSE);
}
AFSDbgTrace(( AFS_SUBSYSTEM_LOCK_PROCESSING,
pObjectInfo = DirectoryCB->ObjectInformation;
pParentObjectInfo = AFSFindObjectInfo( pObjectInfo->VolumeCB,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ FALSE);
stDelete.ParentId = pObjectInfo->ParentFileId;
{
pParentObjectInfo = AFSFindObjectInfo( ObjectInfo->VolumeCB,
- &ObjectInfo->ParentFileId);
+ &ObjectInfo->ParentFileId,
+ TRUE);
stTargetID.ParentId = ObjectInfo->ParentFileId;
}
{
pGrandParentObject = AFSFindObjectInfo( pParentObject->VolumeCB,
- &pParentObject->ParentFileId);
+ &pParentObject->ParentFileId,
+ TRUE);
if ( pGrandParentObject)
{
{
pParentObjectInfo = AFSFindObjectInfo( pObjectInfo->VolumeCB,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ TRUE);
}
if( DirectoryCB->ObjectInformation->Fcb == NULL)
{
AFSObjectInfoCB * pParentObjectInfo = AFSFindObjectInfo( DirectoryCB->ObjectInformation->VolumeCB,
- &DirectoryCB->ObjectInformation->ParentFileId);
+ &DirectoryCB->ObjectInformation->ParentFileId,
+ TRUE);
if ( pParentObjectInfo != NULL)
{
{
pSrcParentObject = AFSFindObjectInfo( pSrcFcb->ObjectInformation->VolumeCB,
- &pSrcFcb->ObjectInformation->ParentFileId);
+ &pSrcFcb->ObjectInformation->ParentFileId,
+ TRUE);
}
if( pSrcParentObject == NULL)
{
pSrcParentObject = AFSFindObjectInfo( pSrcFcb->ObjectInformation->VolumeCB,
- &pSrcFcb->ObjectInformation->ParentFileId);
+ &pSrcFcb->ObjectInformation->ParentFileId,
+ TRUE);
}
if( pSrcParentObject == NULL)
{
pParentObjectInfo = AFSFindObjectInfo( (*ppObjectInfo)->VolumeCB,
- &(*ppObjectInfo)->ParentFileId);
+ &(*ppObjectInfo)->ParentFileId,
+ FALSE);
}
if( (*ppObjectInfo)->FileType == AFS_FILE_TYPE_SYMLINK ||
}
pParentObjectInfo = AFSFindObjectInfo( pCurrentFcb->ObjectInformation->VolumeCB,
- &pCurrentFcb->ObjectInformation->ParentFileId);
+ &pCurrentFcb->ObjectInformation->ParentFileId,
+ FALSE);
if ( pParentObjectInfo != NULL)
{
AFSObjectInfoCB *
AFSFindObjectInfo( IN AFSVolumeCB *VolumeCB,
- IN AFSFileID *FileId)
+ IN AFSFileID *FileId,
+ IN BOOLEAN bUpdateLastUse)
{
DWORD ntStatus = STATUS_SUCCESS;
ULONGLONG ullIndex;
"AFSFindObjectInfo Decrement count on object %p Cnt %d\n",
pObjectInfo,
lCount));
+
+ if ( bUpdateLastUse)
+ {
+
+ KeQueryTickCount( &pObjectInfo->LastAccessCount);
+ }
}
AFSReleaseResource( VolumeCB->ObjectInfoTree.TreeLock);
{
pParentObjectInfo = AFSFindObjectInfo( pVolume,
- &pObjectInfo->ParentFileId);
+ &pObjectInfo->ParentFileId,
+ FALSE);
+
if( pParentObjectInfo != NULL)
{
{
pParentObjectInfo = AFSFindObjectInfo( pCurrentObject->VolumeCB,
- &pCurrentObject->ParentFileId);
+ &pCurrentObject->ParentFileId,
+ FALSE);
}
ASSERT( pParentObjectInfo != NULL);
//
bReleaseVolumeTreeLock = AFSAcquireExcl( pVolumeCB->ObjectInfoTree.TreeLock,
- FALSE);
+ TRUE);
}
pCurrentObject = pNextObject;
AFSObjectInfoCB *
AFSFindObjectInfo( IN AFSVolumeCB * VolumeCB,
- IN AFSFileID * FileID);
+ IN AFSFileID * FileID,
+ IN BOOLEAN bUpdateLastUse);
void
AFSReleaseObjectInfo( IN OUT AFSObjectInfoCB **ppObjectInfo);