From 6ba67b8152def148a87fdd6049e65956fb4656a9 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Tue, 23 Jan 2018 21:36:19 +0100 Subject: [PATCH] [NTOSKRNL] Bug fix: lazy write more often. CcDirtyPageThreshold is not here to compute when you have to write, but to know where you have to deny writes. More commits to come in that direction! CORE-14235 --- ntoskrnl/cc/view.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/ntoskrnl/cc/view.c b/ntoskrnl/cc/view.c index 8fb7f5333c9..0d1822c6967 100644 --- a/ntoskrnl/cc/view.c +++ b/ntoskrnl/cc/view.c @@ -326,23 +326,18 @@ CciLazyWriter(PVOID Unused) /* We're not sleeping anymore */ KeClearEvent(&iLazyWriterNotify); - /* Only start operations if above threshold */ - DPRINT("TS: %lu, Count: %lu\n", CcDirtyPageThreshold, CcTotalDirtyPages); - if (CcTotalDirtyPages > CcDirtyPageThreshold) + /* Our target is one-eighth of the dirty pages */ + Target = CcTotalDirtyPages / 8; + if (Target != 0) { - /* Our target is one-eighth of the dirty pages */ - Target = CcTotalDirtyPages / 8; - if (Target != 0) - { - /* Flush! */ - DPRINT("Lazy writer starting (%d)\n", Target); - CcRosFlushDirtyPages(Target, &Count, FALSE, TRUE); - - /* And update stats */ - CcLazyWritePages += Count; - ++CcLazyWriteIos; - DPRINT("Lazy writer done (%d)\n", Count); - } + /* Flush! */ + DPRINT("Lazy writer starting (%d)\n", Target); + CcRosFlushDirtyPages(Target, &Count, FALSE, TRUE); + + /* And update stats */ + CcLazyWritePages += Count; + ++CcLazyWriteIos; + DPRINT("Lazy writer done (%d)\n", Count); } /* Inform people waiting on us that we're done */ -- 2.17.1