From e0b0b1b367f470b5fa1d5e7b0f171485e248823f Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sat, 22 Oct 2016 14:04:31 -0700 Subject: [PATCH] sys: read,write: IRP_MN_MDL improvements --- src/sys/read.c | 2 -- src/sys/util.c | 48 ++++++------------------------------------------ src/sys/write.c | 2 -- 3 files changed, 6 insertions(+), 46 deletions(-) diff --git a/src/sys/read.c b/src/sys/read.c index 405dbbce..1a9f0bd4 100644 --- a/src/sys/read.c +++ b/src/sys/read.c @@ -175,8 +175,6 @@ static NTSTATUS FspFsvolReadCached( } else { - ASSERT(0 == Irp->MdlAddress); - Result = FspCcMdlRead(FileObject, &ReadOffset, ReadLength, &Irp->MdlAddress, &Irp->IoStatus); if (!NT_SUCCESS(Result)) diff --git a/src/sys/util.c b/src/sys/util.c index 9b28cae2..8989b52a 100644 --- a/src/sys/util.c +++ b/src/sys/util.c @@ -442,33 +442,15 @@ NTSTATUS FspCcMdlRead(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG { PAGED_CODE(); - NTSTATUS Result; - - *PMdlChain = 0; - try { CcMdlRead(FileObject, FileOffset, Length, PMdlChain, IoStatus); - Result = IoStatus->Status; + return IoStatus->Status; } - except(EXCEPTION_EXECUTE_HANDLER) + except (EXCEPTION_EXECUTE_HANDLER) { - Result = GetExceptionCode(); + return GetExceptionCode(); } - - if (!NT_SUCCESS(Result)) - { - if (0 != *PMdlChain) - { - CcMdlReadComplete(FileObject, *PMdlChain); - *PMdlChain = 0; - } - - IoStatus->Information = 0; - IoStatus->Status = Result; - } - - return Result; } NTSTATUS FspCcMdlReadComplete(PFILE_OBJECT FileObject, PMDL MdlChain) @@ -491,33 +473,15 @@ NTSTATUS FspCcPrepareMdlWrite(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset { PAGED_CODE(); - NTSTATUS Result; - - *PMdlChain = 0; - try { CcPrepareMdlWrite(FileObject, FileOffset, Length, PMdlChain, IoStatus); - Result = IoStatus->Status; + return IoStatus->Status; } - except(EXCEPTION_EXECUTE_HANDLER) + except (EXCEPTION_EXECUTE_HANDLER) { - Result = GetExceptionCode(); + return GetExceptionCode(); } - - if (!NT_SUCCESS(Result)) - { - if (0 != *PMdlChain) - { - CcMdlWriteAbort(FileObject, *PMdlChain); - *PMdlChain = 0; - } - - IoStatus->Information = 0; - IoStatus->Status = Result; - } - - return Result; } NTSTATUS FspCcMdlWriteComplete(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, PMDL MdlChain) diff --git a/src/sys/write.c b/src/sys/write.c index 7f7f851a..550f4a11 100644 --- a/src/sys/write.c +++ b/src/sys/write.c @@ -218,8 +218,6 @@ static NTSTATUS FspFsvolWriteCached( } else { - ASSERT(0 == Irp->MdlAddress); - Result = FspCcPrepareMdlWrite(FileObject, &WriteOffset, WriteLength, &Irp->MdlAddress, &Irp->IoStatus); if (!NT_SUCCESS(Result))