[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:
		
				
					committed by
					
						 CodingWorkshop Signing Team
						CodingWorkshop Signing Team
					
				
			
			
				
	
				
						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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user