Windows: Invalidate all volumes at library init
[openafs.git] / src / WINNT / afsrdr / kernel / lib / Include / AFSCommon.h
index e8c506d..ad4759c 100644 (file)
@@ -189,10 +189,12 @@ AFSUpdateFileInformation( IN AFSFileID *ParentFid,
 
 NTSTATUS
 AFSNotifyDelete( IN AFSDirectoryCB *DirectoryCB,
-                 IN BOOLEAN CheckOnly);
+                 IN GUID           *AuthGroup,
+                 IN BOOLEAN         CheckOnly);
 
 NTSTATUS
 AFSNotifyRename( IN AFSObjectInfoCB *ObjectInfo,
+                 IN GUID            *AuthGroup,
                  IN AFSObjectInfoCB *ParentObjectInfo,
                  IN AFSObjectInfoCB *TargetParentObjectInfo,
                  IN AFSDirectoryCB *DirectoryCB,
@@ -207,7 +209,7 @@ AFSEvaluateTargetByID( IN AFSObjectInfoCB *ObjectInfo,
 
 NTSTATUS
 AFSEvaluateTargetByName( IN GUID *AuthGroup,
-                         IN AFSFileID *ParentFileId,
+                         IN AFSObjectInfoCB *ParentObjectInfo,
                          IN PUNICODE_STRING SourceName,
                          OUT AFSDirEnumEntry **DirEnumEntry);
 
@@ -346,6 +348,7 @@ AFSExtentContains( IN AFSExtent *Extent, IN PLARGE_INTEGER Offset);
 
 NTSTATUS
 AFSRequestExtents( IN  AFSFcb *Fcb,
+                   IN  AFSCcb *Ccb,
                    IN  PLARGE_INTEGER Offset,
                    IN  ULONG Size,
                    OUT BOOLEAN *FullyMApped);
@@ -358,11 +361,13 @@ BOOLEAN AFSDoExtentsMapRegion(IN AFSFcb *Fcb,
 
 NTSTATUS
 AFSRequestExtentsAsync( IN AFSFcb *Fcb,
+                        IN AFSCcb *Ccb,
                         IN PLARGE_INTEGER Offset,
                         IN ULONG Size);
 
 NTSTATUS
-AFSWaitForExtentMapping ( IN AFSFcb *Fcb );
+AFSWaitForExtentMapping ( IN AFSFcb *Fcb,
+                          IN AFSCcb *Ccb);
 
 NTSTATUS
 AFSProcessSetFileExtents( IN AFSSetFileExtentsCB *SetExtents );
@@ -379,19 +384,27 @@ AFSProcessSetExtents( IN AFSFcb *pFcb,
                       IN AFSFileExtentCB *Result);
 
 NTSTATUS
-AFSFlushExtents( IN AFSFcb *pFcb);
+AFSFlushExtents( IN AFSFcb *pFcb,
+                 IN GUID *AuthGroup);
+
+NTSTATUS
+AFSReleaseExtentsWithFlush( IN AFSFcb *Fcb,
+                            IN GUID *AuthGroup);
 
 NTSTATUS
-AFSReleaseExtentsWithFlush( IN AFSFcb *Fcb);
+AFSReleaseCleanExtents( IN AFSFcb *Fcb,
+                        IN GUID *AuthGroup);
 
 VOID
 AFSMarkDirty( IN AFSFcb *pFcb,
               IN AFSExtent *StartExtent,
               IN ULONG ExtentsCount,
-              IN LARGE_INTEGER *StartingByte);
+              IN LARGE_INTEGER *StartingByte,
+              IN BOOLEAN DerefExtents);
 
 BOOLEAN
-AFSTearDownFcbExtents( IN AFSFcb *Fcb ) ;
+AFSTearDownFcbExtents( IN AFSFcb *Fcb,
+                       IN GUID *AuthGroup);
 
 void
 AFSTrimExtents( IN AFSFcb *Fcb,
@@ -414,6 +427,9 @@ void
 AFSRemoveEntryDirtyList( IN AFSFcb *Fcb,
                          IN AFSExtent *Extent);
 
+AFSExtent *
+ExtentFor( PLIST_ENTRY le, ULONG SkipList );
+
 #if GEN_MD5
 void
 AFSSetupMD5Hash( IN AFSFcb *Fcb,
@@ -478,8 +494,7 @@ AFSClose( IN PDEVICE_OBJECT DeviceObject,
 //
 
 NTSTATUS
-AFSInitFcb( IN AFSDirectoryCB   *DirEntry,
-            IN OUT AFSFcb     **Fcb);
+AFSInitFcb( IN AFSDirectoryCB   *DirEntry);
 
 NTSTATUS
 AFSInitVolume( IN GUID *AuthGroup,
@@ -503,7 +518,12 @@ void
 AFSRemoveFcb( IN AFSFcb *Fcb);
 
 NTSTATUS
-AFSRemoveCcb( IN AFSCcb *Ccb);
+AFSRemoveCcb( IN AFSFcb *Fcb,
+              IN AFSCcb *Ccb);
+
+NTSTATUS
+AFSInsertCcb( IN AFSFcb *Fcb,
+              IN AFSCcb *Ccb);
 
 //
 // AFSNameSupport.cpp Prototypes
@@ -577,7 +597,8 @@ AFSBuildRootVolume( IN GUID *AuthGroup,
 NTSTATUS
 AFSProcessDFSLink( IN AFSDirectoryCB *DirEntry,
                    IN PFILE_OBJECT FileObject,
-                   IN UNICODE_STRING *RemainingPath);
+                   IN UNICODE_STRING *RemainingPath,
+                   IN GUID *AuthGroup);
 
 //
 // AFSNetworkProviderSupport.cpp
@@ -1093,6 +1114,10 @@ AFSValidateSymLink( IN GUID *AuthGroup,
 NTSTATUS
 AFSInvalidateCache( IN AFSInvalidateCacheCB *InvalidateCB);
 
+NTSTATUS
+AFSInvalidateObject( IN OUT AFSObjectInfoCB **ppObjectInfo,
+                     IN     ULONG Reason);
+
 BOOLEAN
 AFSIsChildOfParent( IN AFSFcb *Dcb,
                     IN AFSFcb *Fcb);
@@ -1129,6 +1154,9 @@ NTSTATUS
 AFSInvalidateVolume( IN AFSVolumeCB *VolumeCB,
                      IN ULONG Reason);
 
+VOID
+AFSInvalidateAllVolumes( VOID);
+
 NTSTATUS
 AFSVerifyEntry( IN GUID *AuthGroup,
                 IN AFSDirectoryCB *DirectoryCB);
@@ -1253,6 +1281,7 @@ AFSRetrieveFileAttributes( IN AFSDirectoryCB *ParentDirectoryCB,
                            IN AFSDirectoryCB *DirectoryCB,
                            IN UNICODE_STRING *ParentPathName,
                            IN AFSNameArrayHdr *RelatedNameArray,
+                           IN GUID           *AuthGroup,
                            OUT AFSFileInfoCB *FileInfo);
 
 AFSObjectInfoCB *
@@ -1352,6 +1381,16 @@ void
 AFSRetrieveParentPath( IN UNICODE_STRING *FullFileName,
                        OUT UNICODE_STRING *ParentPath);
 
+NTSTATUS
+AFSRetrieveValidAuthGroup( IN AFSFcb *Fcb,
+                           IN AFSObjectInfoCB *ObjectInfo,
+                           IN BOOLEAN WriteAccess,
+                           OUT GUID *AuthGroup);
+
+NTSTATUS
+AFSPerformObjectInvalidate( IN AFSObjectInfoCB *ObjectInfo,
+                            IN ULONG InvalidateReason);
+
 //
 // AFSWorker.cpp Prototypes
 //
@@ -1418,7 +1457,8 @@ NTSTATUS
 AFSShutdownVolumeWorker( IN AFSVolumeCB *VolumeCB);
 
 NTSTATUS
-AFSQueueFlushExtents( IN AFSFcb *Fcb);
+AFSQueueFlushExtents( IN AFSFcb *Fcb,
+                      IN GUID *AuthGroup);
 
 NTSTATUS
 AFSQueueAsyncRead( IN PDEVICE_OBJECT DeviceObject,
@@ -1444,6 +1484,10 @@ AFSQueueStartIos( IN PFILE_OBJECT CacheFileObject,
                   IN ULONG RunCount,
                   IN AFSGatherIo *GatherIo);
 
+NTSTATUS
+AFSQueueInvalidateObject( IN AFSObjectInfoCB *ObjectInfo,
+                          IN ULONG InvalidateReason);
+
 //
 // AFSMD5Support.cpp Prototypes
 //