From: Jeffrey Altman Date: Fri, 5 Oct 2012 02:07:40 +0000 (-0400) Subject: Windows: AFS_INVALIDATE_DELETE must cancel IO X-Git-Tag: upstream/1.8.0_pre1^2~1915 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=c53220c179b06fdeb03879e8dc5e10f69bbe0a5f;p=packages%2Fo%2Fopenafs.git 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 --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index 547ed7c5c..282394010 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;