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 <rdw@steadingsoftware.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>
This commit is contained in:
Jeffrey Altman 2012-10-04 22:07:40 -04:00
parent 611e80ee12
commit c53220c179

View File

@ -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;