sys: read,write: IRP_MN_MDL improvements

This commit is contained in:
Bill Zissimopoulos 2016-10-22 14:04:31 -07:00
parent a525e095d3
commit e0b0b1b367
3 changed files with 6 additions and 46 deletions

View File

@ -175,8 +175,6 @@ static NTSTATUS FspFsvolReadCached(
} }
else else
{ {
ASSERT(0 == Irp->MdlAddress);
Result = FspCcMdlRead(FileObject, &ReadOffset, ReadLength, &Irp->MdlAddress, Result = FspCcMdlRead(FileObject, &ReadOffset, ReadLength, &Irp->MdlAddress,
&Irp->IoStatus); &Irp->IoStatus);
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))

View File

@ -442,33 +442,15 @@ NTSTATUS FspCcMdlRead(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG
{ {
PAGED_CODE(); PAGED_CODE();
NTSTATUS Result;
*PMdlChain = 0;
try try
{ {
CcMdlRead(FileObject, FileOffset, Length, PMdlChain, IoStatus); 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) NTSTATUS FspCcMdlReadComplete(PFILE_OBJECT FileObject, PMDL MdlChain)
@ -491,33 +473,15 @@ NTSTATUS FspCcPrepareMdlWrite(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset
{ {
PAGED_CODE(); PAGED_CODE();
NTSTATUS Result;
*PMdlChain = 0;
try try
{ {
CcPrepareMdlWrite(FileObject, FileOffset, Length, PMdlChain, IoStatus); 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) NTSTATUS FspCcMdlWriteComplete(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, PMDL MdlChain)

View File

@ -218,8 +218,6 @@ static NTSTATUS FspFsvolWriteCached(
} }
else else
{ {
ASSERT(0 == Irp->MdlAddress);
Result = FspCcPrepareMdlWrite(FileObject, &WriteOffset, WriteLength, &Irp->MdlAddress, Result = FspCcPrepareMdlWrite(FileObject, &WriteOffset, WriteLength, &Irp->MdlAddress,
&Irp->IoStatus); &Irp->IoStatus);
if (!NT_SUCCESS(Result)) if (!NT_SUCCESS(Result))