From e58eaae182dc877c0818b3cc5e8ea408606863f0 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 3 Dec 2012 09:11:14 -0500 Subject: [PATCH] Windows: Handle AFSLocateNameEntry() STATUS_REPARSE AFSLocateNameEntry() can return STATUS_REPARSE in addition to NTSTATUS failure codes. As in the case of an NTSTATUS code other than STATUS_OBJECT_NAME_NOT_FOUND, the reference counts are decremented in AFSLocateNameEntry() if STATUS_REPARSE is returned. Change-Id: I7cab5be2ae304be47cb14abb4f6952e4e0e65efe Reviewed-on: http://gerrit.openafs.org/8580 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index 15af3e2..f524fa1 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -6334,11 +6334,12 @@ AFSRetrieveFileAttributes( IN AFSDirectoryCB *ParentDirectoryCB, &pDirectoryEntry, NULL); - if( !NT_SUCCESS( ntStatus)) + if( !NT_SUCCESS( ntStatus) || + ntStatus == STATUS_REPARSE) { // - // The volume lock was released on failure above + // The volume lock was released on failure or reparse above // Except for STATUS_OBJECT_NAME_NOT_FOUND // @@ -6998,11 +6999,12 @@ AFSEvaluateRootEntry( IN AFSDirectoryCB *DirectoryCB, &pDirectoryEntry, NULL); - if( !NT_SUCCESS( ntStatus)) + if( !NT_SUCCESS( ntStatus) || + ntStatus == STATUS_REPARSE) { // - // The volume lock was released on failure above + // The volume lock was released on failure or reparse above // Except for STATUS_OBJECT_NAME_NOT_FOUND // @@ -8432,11 +8434,12 @@ AFSGetObjectStatus( IN AFSGetStatusInfoCB *GetStatusInfo, &pDirectoryEntry, NULL); - if( !NT_SUCCESS( ntStatus)) + if( !NT_SUCCESS( ntStatus) || + ntStatus == STATUS_REPARSE) { // - // The volume lock was released on failure above + // The volume lock was released on failure or reparse above // Except for STATUS_OBJECT_NAME_NOT_FOUND // -- 1.9.4