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: tfa...@svn.reactos.org
Sent: ‎Tuesday‎, ‎August‎ ‎26‎, ‎2014 ‎6‎:‎41‎ ‎AM
To: ros-di...@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/fastfat/fsctl.c?rev=63953&r1=63952&r2=63953&view=diff
==============================================================================
--- 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;
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to