This seems strange. I understand that NT 5.x has a limitation of 64 MB MDLs on x86, but
direct I/O was designed for exactly this case of large I/O operations. Has anyone verified
that 2k3 doesn’t do MDL chaining for direct I/O when the transfer is larger than a single
MDL can hold?
Also aren’t there changes to the IRP dispatch routines required to cope with not having an
Irp->MdlAddress pointer anymore?
Cameron
From: tfaber(a)svn.reactos.org
Sent: Tuesday, August 26, 2014 6:41 AM
To: ros-diffs(a)reactos.org
Author: tfaber
Date: Tue Aug 26 13:41:57 2014
New Revision: 63953
URL:
http://svn.reactos.org/svn/reactos?rev=63953&view=rev
Log:
[FASTFAT]
- Do not use direct I/O since it limits read/write operations to 64 MB
CORE-8410 #resolve
Modified:
trunk/reactos/drivers/filesystems/fastfat/fsctl.c
Modified: trunk/reactos/drivers/filesystems/fastfat/fsctl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/fastfa…
==============================================================================
--- trunk/reactos/drivers/filesystems/fastfat/fsctl.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/fastfat/fsctl.c [iso-8859-1] Tue Aug 26 13:41:57
2014
@@ -442,8 +442,7 @@
goto ByeBye;
}
- DeviceObject->Flags = DeviceObject->Flags | DO_DIRECT_IO;
- DeviceExt = (PVOID) DeviceObject->DeviceExtension;
+ DeviceExt = DeviceObject->DeviceExtension;
RtlZeroMemory(DeviceExt, ROUND_UP(sizeof(DEVICE_EXTENSION), sizeof(ULONG)) +
sizeof(HASHENTRY*) * HashTableSize);
DeviceExt->FcbHashTable = (HASHENTRY**)((ULONG_PTR)DeviceExt +
ROUND_UP(sizeof(DEVICE_EXTENSION), sizeof(ULONG)));
DeviceExt->HashTableSize = HashTableSize;