[NTOSKRNL:CC] Disable ExtraWriteBehind Threadpool ,
Threadpool facility will be developed first in LazyWriter-Threadpool branch before merging, to ensure stability. Removed : CcComputeNextScanTime
This commit is contained in:
parent
e25bcab194
commit
d0d6097d57
@ -15,57 +15,6 @@ extern "C"
|
||||
|
||||
/*Internal Function*/
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
CcComputeNextScanTime(PLARGE_INTEGER OldestTICKTIMEForMetadata, PLARGE_INTEGER NextScanDelay)
|
||||
{
|
||||
NextScanDelay- = 0;
|
||||
LARGE_INTEGER CurrentTickCount = {0};
|
||||
LARGE_INTEGER TICKTIME = {0};
|
||||
LARGE_INTEGER WRITE_DELAY = {0};
|
||||
LARGE_INTEGER TICK_ELAPSED = {0};
|
||||
|
||||
if (CcMaxWriteBehindThreads < CcNumberofWorkerThreads)
|
||||
{
|
||||
|
||||
|
||||
KeQueryTickCount(&CurrentTickCount);
|
||||
|
||||
// Calculate Tick Time based on the current tick count and the oldest scan time
|
||||
TICKTIME.QuadPart = 160000000 / KeMaximumIncrement;
|
||||
WRITE_DELAY.QuadPart = (OldestTICKTIMEForMetadata->QuadPart - CurrentTickCount.QuadPart) / KeMaximumIncrement;
|
||||
|
||||
// Increment the consecutive workless lazy scan count
|
||||
++CcConsecutiveWorklessLazyScanCount;
|
||||
|
||||
// Check if the oldest scan time is not the maximum and the calculated delay is greater than the current tick
|
||||
// count
|
||||
if (OldestTICKTIMEForMetadata->QuadPart != -1 && OldestTICKTIMEForMetadata->QuadPart != 0x7FFFFFFFFFFFFFFF &&
|
||||
(TICKTIME.QuadPart + OldestTICKTIMEForMetadata->QuadPart) > CurrentTickCount.QuadPart)
|
||||
{
|
||||
|
||||
TICK_ELAPSED.QuadPart = OldestTICKTIMEForMetadata->QuadPart - CurrentTickCount.QuadPart;
|
||||
|
||||
// Calculate the next scan delay
|
||||
NextScanDelay->QuadPart = TICKTIME.QuadPart + TICK_ELAPSED.QuadPart;
|
||||
|
||||
// Reset the consecutive workless lazy scan count
|
||||
CcConsecutiveWorklessLazyScanCount = 0;
|
||||
}
|
||||
|
||||
// Check if the number of consecutive workless lazy scans has reached the maximum
|
||||
if (CcConsecutiveWorklessLazyScanCount >= CcMaxWorklessLazywriteScans)
|
||||
{
|
||||
// Disable the scan by setting the next scan delay to the maximum values
|
||||
NextScanDelay->QuadPart = -1;
|
||||
CcConsecutiveWorklessLazyScanCount = 0;
|
||||
NextScanDelay->HighPart = 0x7FFFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
VECTORCALL
|
||||
CcPostWorkQueue(IN PWORK_QUEUE_ENTRY WorkItem,
|
||||
@ -951,10 +900,10 @@ NTAPI CcLazyWriteScan()
|
||||
|
||||
CcPostWorkQueue(workItem, &CcRegularWorkQueue);
|
||||
}
|
||||
CcComputeNextScanTime(&OldestLWSTimeStamp, &NextScanDelay);
|
||||
// CcComputeNextScanTime(&OldestLWSTimeStamp, &NextScanDelay); Enable When Threadpool is finished
|
||||
|
||||
if (!IsListEmpty(&PostWorkList) || !IsListEmpty(&CcDeferredWrites) || MmRegistryStatus.ProductStatus ||
|
||||
NextScanDelay.QuadPart != 0x7FFFFFFFFFFFFFFF))
|
||||
// if (!IsListEmpty(&PostWorkList) || !IsListEmpty(&CcDeferredWrites) || MmRegistryStatus.ProductStatus ||NextScanDelay.QuadPart != 0x7FFFFFFFFFFFFFFF))
|
||||
if (!IsListEmpty(&PostWorkList) || !IsListEmpty(&CcDeferredWrites) || MmRegistryStatus.ProductStatus))
|
||||
{
|
||||
/* Schedule a lazy write scan */
|
||||
CcRescheduleLazyWriteScan(&NextScanDelay);
|
||||
@ -1117,7 +1066,7 @@ CcWorkerThread(PVOID Parameter)
|
||||
{
|
||||
CcQueueThrottle = FALSE;
|
||||
DropThrottle = FALSE;
|
||||
CcReEngageWorkerThreads(CcThreadsActiveBeforeThrottle, CcExtraThreadsActiveBeforeThrottle);
|
||||
// CcReEngageWorkerThreads(CcThreadsActiveBeforeThrottle, CcExtraThreadsActiveBeforeThrottle); Enable When Threadpool is ready
|
||||
}
|
||||
|
||||
if (IoStatus.Information == 0x8A5E)
|
||||
|
Loading…
Reference in New Issue
Block a user