Storport minimport driver's MaximumTransferLength ( and MaximumSGList) usage

In my storport miniport driver, my settings to MaximumTransferLength and NumberOfPhysicalBreaks is not getting honored by storport driver !!

In my Storport Miniport Driver, I am setting
PPORT_CONFIGURATION_INFORMATION->
MaximumTransferLength = (255 - 1) * 4096;

PPORT_CONFIGURATION_INFORMATION->
NumberOfPhysicalBreaks = 255;

And in my miniport service registry key, I have set
HKLM\System\CurrentControlSet\services\MyServices\Parameters\Device\
MaximumSGList REG_DWORD 255.

When I run Iometer (or my win32 RAW Disk Read/Write Application as write thru and no intermediate Buffering ) with I/O size 64K or 128K (or above ), My Miniport driver never gets IoSize greater than 32K.

It looks like, Storport driver is splitting up request with IO Size larger than 32K , and always sends me max IO size 32 K (SG List max element always gets 8 !!)

I have tried with 128K maxtransfer length settings in registry and in my driver, still the result is same. I never get more than 32K size of IO even though user mode application IOmeter has issued one larger size read or write request.

Does anyone knows why Storport driver is splitting packets even though miniport supports large size packets? Is there any other settings which I am missing to set in miniport driver for maxIoSize ?

I will appreciate your response.

Thanks,
Parag


All-new Yahoo! Mail - Fire up a more powerful email and get things done faster.

Well, NTDEV might be a better list for this line in inquiry, but I’ll ask some leading questions (so you can direct follow-up there.)

First, you don’t mention how you know that it is Storport spliiting up the I/O operations. Is it possible they are split up BEFORE it makes it to Storport? Remember, even with non-buffered I/O the data still has to go through the file system. If the file to which you are writing is fragmented (are the subsequent I/O operations contiguous on the disk?) then the file system driver will break it up.

Second, you don’t mention which version of the OS you are using or the hardware platform. Are you seeing these results on an x64 box running Windows XP 64-bit Edition? Or on a Windows Vista RC2 x86 box? Surprisingly enough, the OS behaves differently between OS versions.

Tony

Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com