From b695eb272d66269a57cdca2550c00f2b0003ae35 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 21 Mar 2012 10:11:31 -0400 Subject: [PATCH] Windows: AFSRedir Debug for STATUS_NOT_A_DIRECTORY Add additional logging to handle the case where the afsd_service returns STATUS_NOT_A_DIRECTORY for eval by id/name. Change-Id: Ib510fcea6102a92e5e810af5923f06dffbba1ed9 Reviewed-on: http://gerrit.openafs.org/6930 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp | 86 ++++++++++++++++--- .../afsrdr/kernel/lib/AFSNameSupport.cpp | 70 ++++++++++++--- 2 files changed, 136 insertions(+), 20 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp b/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp index 1dd8be60d..586762551 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp @@ -1781,16 +1781,82 @@ AFSProcessCreate( IN PIRP Irp, if( !NT_SUCCESS( ntStatus)) { - AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, - AFS_TRACE_LEVEL_ERROR, - "AFSProcessCreate (%08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX Status %08lX\n", - Irp, - &pDirEntry->NameInformation.FileName, - pObjectInfo->FileId.Cell, - pObjectInfo->FileId.Volume, - pObjectInfo->FileId.Vnode, - pObjectInfo->FileId.Unique, - ntStatus); + if ( ntStatus == STATUS_NOT_A_DIRECTORY) + { + + if ( pParentObjectInfo == pObjectInfo->ParentObjectInformation) + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSProcessCreate (%08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX PARENT %08lX-%08lX-%08lX-%08lX Status %08lX\n", + Irp, + &pDirEntry->NameInformation.FileName, + pObjectInfo->FileId.Cell, + pObjectInfo->FileId.Volume, + pObjectInfo->FileId.Vnode, + pObjectInfo->FileId.Unique, + pParentObjectInfo->FileId.Cell, + pParentObjectInfo->FileId.Volume, + pParentObjectInfo->FileId.Vnode, + pParentObjectInfo->FileId.Unique, + ntStatus); + } + else if ( pObjectInfo->ParentObjectInformation == NULL) + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSProcessCreate (%08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX PARENT %08lX-%08lX-%08lX-%08lX != NULL Status %08lX\n", + Irp, + &pDirEntry->NameInformation.FileName, + pObjectInfo->FileId.Cell, + pObjectInfo->FileId.Volume, + pObjectInfo->FileId.Vnode, + pObjectInfo->FileId.Unique, + pParentObjectInfo->FileId.Cell, + pParentObjectInfo->FileId.Volume, + pParentObjectInfo->FileId.Vnode, + pParentObjectInfo->FileId.Unique, + ntStatus); + } + else + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSProcessCreate (%08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX PARENT %08lX-%08lX-%08lX-%08lX != %08lX-%08lX-%08lX-%08lX Status %08lX\n", + Irp, + &pDirEntry->NameInformation.FileName, + pObjectInfo->FileId.Cell, + pObjectInfo->FileId.Volume, + pObjectInfo->FileId.Vnode, + pObjectInfo->FileId.Unique, + pParentObjectInfo->FileId.Cell, + pParentObjectInfo->FileId.Volume, + pParentObjectInfo->FileId.Vnode, + pParentObjectInfo->FileId.Unique, + pObjectInfo->ParentObjectInformation->FileId.Cell, + pObjectInfo->ParentObjectInformation->FileId.Volume, + pObjectInfo->ParentObjectInformation->FileId.Vnode, + pObjectInfo->ParentObjectInformation->FileId.Unique, + ntStatus); + } + } + else + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSProcessCreate (%08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX Status %08lX\n", + Irp, + &pDirEntry->NameInformation.FileName, + pObjectInfo->FileId.Cell, + pObjectInfo->FileId.Volume, + pObjectInfo->FileId.Vnode, + pObjectInfo->FileId.Unique, + ntStatus); + } try_return( ntStatus); } diff --git a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp index 3b3f306e9..bf13d2d87 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp @@ -63,6 +63,7 @@ AFSLocateNameEntry( IN GUID *AuthGroup, BOOLEAN bAllocatedSymLinkBuffer = FALSE; UNICODE_STRING uniRelativeName, uniNoOpName; AFSObjectInfoCB *pCurrentObject = NULL; + AFSObjectInfoCB *pParentObjectInfo = NULL; AFSVolumeCB *pCurrentVolume = *VolumeCB; BOOLEAN bReleaseCurrentVolume = TRUE; BOOLEAN bSubstitutedName = FALSE; @@ -250,16 +251,55 @@ AFSLocateNameEntry( IN GUID *AuthGroup, if( !NT_SUCCESS( ntStatus)) { - AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, - AFS_TRACE_LEVEL_ERROR, - "AFSLocateNameEntry (FO: %08lX) Failed to evaluate parent %wZ FID %08lX-%08lX-%08lX-%08lX Status %08lX\n", - FileObject, - &pDirEntry->NameInformation.FileName, - pCurrentObject->FileId.Cell, - pCurrentObject->FileId.Volume, - pCurrentObject->FileId.Vnode, - pCurrentObject->FileId.Unique, - ntStatus); + if ( ntStatus == STATUS_NOT_A_DIRECTORY) + { + + if ( pCurrentObject->ParentObjectInformation == NULL) + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSLocateNameEntry (FO: %08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX PARENT NULL Status %08lX\n", + FileObject, + &pDirEntry->NameInformation.FileName, + pCurrentObject->FileId.Cell, + pCurrentObject->FileId.Volume, + pCurrentObject->FileId.Vnode, + pCurrentObject->FileId.Unique, + ntStatus); + } + else + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSLocateNameEntry (FO: %08lX) Failed to evaluate object %wZ FID %08lX-%08lX-%08lX-%08lX PARENT %08lX-%08lX-%08lX-%08lX Status %08lX\n", + FileObject, + &pDirEntry->NameInformation.FileName, + pCurrentObject->FileId.Cell, + pCurrentObject->FileId.Volume, + pCurrentObject->FileId.Vnode, + pCurrentObject->FileId.Unique, + pCurrentObject->ParentObjectInformation->FileId.Cell, + pCurrentObject->ParentObjectInformation->FileId.Volume, + pCurrentObject->ParentObjectInformation->FileId.Vnode, + pCurrentObject->ParentObjectInformation->FileId.Unique, + ntStatus); + } + } + else + { + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_ERROR, + "AFSLocateNameEntry (FO: %08lX) Failed to evaluate parent %wZ FID %08lX-%08lX-%08lX-%08lX Status %08lX\n", + FileObject, + &pDirEntry->NameInformation.FileName, + pCurrentObject->FileId.Cell, + pCurrentObject->FileId.Volume, + pCurrentObject->FileId.Vnode, + pCurrentObject->FileId.Unique, + ntStatus); + } try_return( ntStatus); } @@ -3783,6 +3823,16 @@ AFSCheckCellName( IN GUID *AuthGroup, if( !NT_SUCCESS( ntStatus)) { + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_WARNING, + "AFSCheckCellName entry %wZ does not exist parent FID %08lX-%08lX-%08lX-%08lX Status %08lX\n", + &CellName, + AFSGlobalRoot->ObjectInformation.FileId.Cell, + AFSGlobalRoot->ObjectInformation.FileId.Volume, + AFSGlobalRoot->ObjectInformation.FileId.Vnode, + AFSGlobalRoot->ObjectInformation.FileId.Unique, + ntStatus); + try_return( ntStatus); } -- 2.39.5