Windows: Improve AFSNotifyDelete
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 31 Jan 2012 20:51:34 +0000 (15:51 -0500)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 3 Feb 2012 21:35:24 +0000 (13:35 -0800)
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>

src/WINNT/afsrdr/kernel/lib/AFSCommSupport.cpp
src/WINNT/afsrdr/kernel/lib/AFSCreate.cpp

index 3d702e0..325a562 100644 (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);
index 5c2f9a2..08fecc1 100644 (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
                 //