From 816834cc03317bdda7f9fad0afdd838aa3cea52a Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 7 Mar 2013 22:05:20 -0500 Subject: [PATCH] Windows: Permit deletion of reparse points AFSSetDispositionInfo did not set the AFS_DIR_ENTRY_PENDING_DELETE flag if the DirectoryCB type was mountpoint, symlink, dfslink or invalid. This patchset permits the flag to be set so reparse point objects can be deleted without using the AFS "symlink.exe remove" command. Change-Id: I03e1cb7b08989950a4307e59073e5fb712d1a901 Reviewed-on: http://gerrit.openafs.org/9475 Tested-by: BuildBot Reviewed-by: Rod Widdowson Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp index e4782d3aa8..75de0a3761 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp @@ -2197,6 +2197,20 @@ AFSSetDispositionInfo( IN PIRP Irp, try_return( ntStatus = STATUS_CANNOT_DELETE); } } + else if( pFcb->Header.NodeTypeCode == AFS_SYMBOLIC_LINK_FCB || + pFcb->Header.NodeTypeCode == AFS_MOUNT_POINT_FCB || + pFcb->Header.NodeTypeCode == AFS_DFS_LINK_FCB || + pFcb->Header.NodeTypeCode == AFS_INVALID_FCB) + { + + AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSSetDispositionInfo Setting PENDING_DELETE on DirEntry %p Name %wZ\n", + DirectoryCB, + &DirectoryCB->NameInformation.FileName); + + SetFlag( pCcb->DirectoryCB->Flags, AFS_DIR_ENTRY_PENDING_DELETE); + } } else {