// Global Cc Data
//
extern ULONG CcRosTraceLevel;
+extern LIST_ENTRY DirtyVacbListHead;
+extern ULONG CcDirtyPageThreshold;
+extern ULONG CcTotalDirtyPages;
+extern LIST_ENTRY CcDeferredWrites;
+extern KSPIN_LOCK CcDeferredWriteSpinLock;
typedef struct _PF_SCENARIO_ID
{
PVOID LazyWriteContext;
KSPIN_LOCK CacheMapLock;
ULONG OpenCount;
+ ULONG DirtyPages;
+ LIST_ENTRY SharedCacheMapLinks;
+ ULONG DirtyPageThreshold;
#if DBG
BOOLEAN Trace; /* enable extra trace output for this cache map and it's VACBs */
#endif
CSHORT RefCount; /* (At offset 0x34 on WinNT4) */
} INTERNAL_BCB, *PINTERNAL_BCB;
+#define NODE_TYPE_DEFERRED_WRITE 0x02FC
+
VOID
NTAPI
CcPfInitializePrefetcher(
PROS_VACB *Vacb
);
-VOID
+BOOLEAN
NTAPI
CcInitView(VOID);
+VOID
+NTAPI
+CcShutdownLazyWriter(VOID);
+
NTSTATUS
NTAPI
CcReadVirtualAddress(PROS_VACB Vacb);
NTSTATUS
NTAPI
-CcRosMarkDirtyVacb(
+CcRosMarkDirtyFile(
PROS_SHARED_CACHE_MAP SharedCacheMap,
LONGLONG FileOffset
);
+VOID
+NTAPI
+CcRosMarkDirtyVacb(
+ PROS_VACB Vacb);
+
+VOID
+NTAPI
+CcRosUnmarkDirtyVacb(
+ PROS_VACB Vacb,
+ BOOLEAN LockViews);
+
NTSTATUS
NTAPI
CcRosFlushDirtyPages(
ULONG Target,
PULONG Count,
- BOOLEAN Wait
+ BOOLEAN Wait,
+ BOOLEAN CalledFromLazy
);
VOID
NTAPI
CcTryToInitializeFileCache(PFILE_OBJECT FileObject);
+VOID
+NTAPI
+CcShutdownSystem(VOID);
+
FORCEINLINE
NTSTATUS
CcRosAcquireVacbLock(