Windows: AFSValidateEntry CcPurge on DV change
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 24 Apr 2012 19:41:39 +0000 (15:41 -0400)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Wed, 25 Apr 2012 01:37:32 +0000 (18:37 -0700)
The variable bPurgeExtents was not being set when a DV change
was detected in AFSValidateEntry().  This resulted in the purge
being skipped and old data being left in the cache.

Change-Id: I6f5a35e5c7a51d28267e0ff25318782a766771ac
Reviewed-on: http://gerrit.openafs.org/7280
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/AFSGeneric.cpp

index ea260f7..0dca9fd 100644 (file)
@@ -3967,6 +3967,24 @@ AFSValidateEntry( IN AFSDirectoryCB *DirEntry,
                                       pObjectInfo->FileId.Vnode,
                                       pObjectInfo->FileId.Unique);
 
+                        if ( pObjectInfo->DataVersion.QuadPart != pDirEnumEntry->DataVersion.QuadPart)
+                        {
+
+                            AFSDbgLogMsg( AFS_SUBSYSTEM_FILE_PROCESSING,
+                                          AFS_TRACE_LEVEL_VERBOSE,
+                                          "AFSValidateEntry DV Change %wZ FID %08lX-%08lX-%08lX-%08lX (%08lX != %08lX)\n",
+                                          &DirEntry->NameInformation.FileName,
+                                          pObjectInfo->FileId.Cell,
+                                          pObjectInfo->FileId.Volume,
+                                          pObjectInfo->FileId.Vnode,
+                                          pObjectInfo->FileId.Unique,
+                                          pObjectInfo->DataVersion.LowPart,
+                                          pDirEnumEntry->DataVersion.LowPart
+                                          );
+
+                            bPurgeExtents = TRUE;
+                        }
+
                         if ( BooleanFlagOn( pObjectInfo->Flags, AFS_OBJECT_FLAGS_VERIFY_DATA))
                         {
                             bPurgeExtents = TRUE;