ULONG CcFastReadNoWait;
ULONG CcFastReadResourceMiss;
+/* Counters:
+ * - Amount of pages flushed to the disk
+ * - Number of flush operations
+ */
+ULONG CcDataPages = 0;
+ULONG CcDataFlushes = 0;
+
/* FUNCTIONS *****************************************************************/
VOID
Spi->CcReadAheadIos = 0; /* FIXME */
Spi->CcLazyWriteIos = CcLazyWriteIos;
Spi->CcLazyWritePages = CcLazyWritePages;
- Spi->CcDataFlushes = 0; /* FIXME */
- Spi->CcDataPages = 0; /* FIXME */
+ Spi->CcDataFlushes = CcDataFlushes;
+ Spi->CcDataPages = CcDataPages;
Spi->ContextSwitches = 0; /* FIXME */
Spi->FirstLevelTbFills = 0; /* FIXME */
Spi->SecondLevelTbFills = 0; /* FIXME */
extern ULONG CcMapDataNoWait;
extern ULONG CcPinReadWait;
extern ULONG CcPinReadNoWait;
+extern ULONG CcDataPages;
+extern ULONG CcDataFlushes;
typedef struct _PF_SCENARIO_ID
{
IOTRACE(IO_API_DEBUG, "FileObject: %p. Mdl: %p. Offset: %p \n",
FileObject, Mdl, Offset);
+ /* Is the write originating from Cc? */
+ if (FileObject->SectionObjectPointer != NULL &&
+ FileObject->SectionObjectPointer->SharedCacheMap != NULL)
+ {
+ ++CcDataFlushes;
+ CcDataPages += BYTES_TO_PAGES(MmGetMdlByteCount(Mdl));
+ }
+
/* Get the Device Object */
DeviceObject = IoGetRelatedDeviceObject(FileObject);