https://git.reactos.org/?p=reactos.git;a=commitdiff;h=cc54e51495f99a90df3bb4...
commit cc54e51495f99a90df3bb46eacc6f6aead518ca5 Author: Pierre Schweitzer pierre@reactos.org AuthorDate: Mon Apr 30 10:36:19 2018 +0200 Commit: Pierre Schweitzer pierre@reactos.org CommitDate: Mon Apr 30 10:36:19 2018 +0200
[NTOSKRNL] Unmark dirty first, and then write.
This will avoid trying to flush twice a dirty VACB under high IOs pressure.
CORE-14584 --- ntoskrnl/cc/view.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/ntoskrnl/cc/view.c b/ntoskrnl/cc/view.c index e1d064312f..5bd1f41411 100644 --- a/ntoskrnl/cc/view.c +++ b/ntoskrnl/cc/view.c @@ -168,10 +168,12 @@ CcRosFlushVacb ( { NTSTATUS Status;
+ CcRosUnmarkDirtyVacb(Vacb, TRUE); + Status = CcWriteVirtualAddress(Vacb); - if (NT_SUCCESS(Status)) + if (!NT_SUCCESS(Status)) { - CcRosUnmarkDirtyVacb(Vacb, TRUE); + CcRosMarkDirtyVacb(Vacb); }
return Status;