Windows: Improve AFSNotifyDelete

Do not call AFSNotifyDelete after the reference count on the
DirEntry->ObjectInformation is given up.

Log the Parent FID and file name since that is what are passed
to the service to perform a  delete.  Log the actual FID of the
object being deleted and not the address of the FID fields.

Change-Id: Ic02e2cec625258356d1b08e03a02a7a9c4eb4ce7
Reviewed-on: http://gerrit.openafs.org/6645
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
This commit is contained in:
Jeffrey Altman 2012-01-31 15:51:34 -05:00 committed by Jeffrey Altman
parent 9a1d7518b6
commit fe952116f3
2 changed files with 14 additions and 9 deletions

View File

@ -1923,11 +1923,16 @@ AFSNotifyDelete( IN AFSDirectoryCB *DirectoryCB,
AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
AFS_TRACE_LEVEL_ERROR,
"AFSNotifyDelete failed FID %08lX-%08lX-%08lX-%08lX Status %08lX\n",
&DirectoryCB->ObjectInformation->FileId.Cell,
&DirectoryCB->ObjectInformation->FileId.Volume,
&DirectoryCB->ObjectInformation->FileId.Vnode,
&DirectoryCB->ObjectInformation->FileId.Unique,
"AFSNotifyDelete failed ParentFID %08lX-%08lX-%08lX-%08lX %wZ FID %08lX-%08lX-%08lX-%08lX Status %08lX\n",
stDelete.ParentId.Cell,
stDelete.ParentId.Volume,
stDelete.ParentId.Vnode,
stDelete.ParentId.Unique,
&DirectoryCB->NameInformation.FileName,
DirectoryCB->ObjectInformation->FileId.Cell,
DirectoryCB->ObjectInformation->FileId.Volume,
DirectoryCB->ObjectInformation->FileId.Vnode,
DirectoryCB->ObjectInformation->FileId.Unique,
ntStatus);
try_return( ntStatus);

View File

@ -2138,6 +2138,10 @@ try_exit:
SetFlag( pDirEntry->Flags, AFS_DIR_ENTRY_DELETED);
AFSNotifyDelete( pDirEntry,
AuthGroup,
FALSE);
//
// Decrement the reference added during initialization of the DE
//
@ -2159,10 +2163,6 @@ try_exit:
pDirEntry,
FALSE); // Leave it in the enum list so the worker cleans it up
AFSNotifyDelete( pDirEntry,
AuthGroup,
FALSE);
//
// Tag the parent as needing verification
//