From c53220c179b06fdeb03879e8dc5e10f69bbe0a5f Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Thu, 4 Oct 2012 22:07:40 -0400 Subject: [PATCH] Windows: AFS_INVALIDATE_DELETE must cancel IO When processing an AFS_INVALIDATE_DELETE the redirector must cancel any outstanding extent requests on the file prior to tearing down the extents. This code path is triggered either when VNOVNODE is received from a file server or when an alternate cache manager interface (SMB) unlinks the file. Change-Id: I16c08c2469228b33ae4ece0e45a9890a057ab257 Reviewed-on: http://gerrit.openafs.org/8206 Reviewed-by: Rod Widdowson Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index 547ed7c..2823940 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -8938,6 +8938,14 @@ AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo, ObjectInfo->Fcb != NULL) { + AFSAcquireExcl( &ObjectInfo->Fcb->NPFcb->Specific.File.ExtentsResource, + TRUE); + + ObjectInfo->Fcb->NPFcb->Specific.File.ExtentsRequestStatus = STATUS_FILE_DELETED; + + KeSetEvent( &ObjectInfo->Fcb->NPFcb->Specific.File.ExtentsRequestComplete, + 0, + FALSE); // // Clear out the extents @@ -8947,6 +8955,8 @@ AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo, AFSTearDownFcbExtents( ObjectInfo->Fcb, NULL); + + AFSReleaseResource( &ObjectInfo->Fcb->NPFcb->Specific.File.ExtentsResource); } break; -- 1.9.4