<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Balloon Text Char";
margin:0in;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.BalloonTextChar
{mso-style-name:"Balloon Text Char";
mso-style-priority:99;
mso-style-link:"Balloon Text";
font-family:"Tahoma","sans-serif";}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle20
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle21
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle22
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Sagi,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>The disk class driver is the one that divides reads and writes into smaller requests. It determines how to divide the request by querying the STORAGE_ADAPTER_DESCRIPTOR. STORPORT gets the information for this structure from the miniport’s PORT_CONFIGURATION_INFORMATION structure (MaximumTransferLength and NumberOfPhysicalBreaks).<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>In reviewing the NVMe source code, it sets these values to max 128K with a registry override available. The INF file sets the override but it too defaults to 128K:<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'>HKR, Parameters\Device, MaxTXSize, %REG_DWORD%, 0x00020000 ; max trasnfer size<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal><span style='color:#1F497D'>Mike Berhan<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>busTRACE Technologies<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D;background:white'>1-208-629-4773</span><span style='color:#1F497D'> (Office)<o:p></o:p></span></p></div><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> nvmewin-bounces@lists.openfabrics.org [mailto:nvmewin-bounces@lists.openfabrics.org] <b>On Behalf Of </b>Sagi Bar<br><b>Sent:</b> Thursday, July 24, 2014 4:23 AM<br><b>To:</b> Alex Chang; nvmewin@lists.openfabrics.org<br><b>Cc:</b> Roman Goldshtein<br><b>Subject:</b> Re: [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:#1F497D'>Hello Alex,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thank you for your answer.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I see that the driver has a readily implemented </span><span style='font-family:"Verdana","sans-serif";color:#010001;background:white;mso-highlight:white'>NVMePreparePRPs</span><span style='font-family:"Verdana","sans-serif";color:#010001'>(…)</span><span style='color:#1F497D'> so adding an extra command shouldn’t be an issue.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I might need this feature in order to prevent the StorPort driver from dividing the request into smaller SRBs (debug purposes).<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thank you, <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:14.0pt;color:#1F497D'>Sagi Bar</span><span style='color:#1F497D'><br>Test & Tools Staff FW Engineer<br></span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";color:#1F497D'><img width=61 height=12 id="_x0000_i1025" src="cid:image001.png@01CFA731.777C88C0" alt="cid:image001.png@01CEA3CD.FE1957E0"><br></span><span style='color:#7F7F7F'>7 Atir Yeda St, Kfar – Saba 44425, Israel<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><a href="mailto:sagi.bar@SanDisk.com">sagi.bar@SanDisk.com</a><o:p></o:p></span></p></div><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Alex Chang [<a href="mailto:Alex.Chang@pmcs.com">mailto:Alex.Chang@pmcs.com</a>] <br><b>Sent:</b> Wednesday, July 23, 2014 2:35 AM<br><b>To:</b> Sagi Bar; <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br><b>Cc:</b> Roman Goldshtein<br><b>Subject:</b> RE: [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:#1F497D'>Hi Sagi,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Yes, you’re right that it’s due to security reasons and, in addition, you may access the associated storage as a physical or formatted drive with Windows supported APIs for your debugging purposes, like IOMeter does.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Alex<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:nvmewin-bounces@lists.openfabrics.org">nvmewin-bounces@lists.openfabrics.org</a> [<a href="mailto:nvmewin-bounces@lists.openfabrics.org">mailto:nvmewin-bounces@lists.openfabrics.org</a>] <b>On Behalf Of </b>Sagi Bar<br><b>Sent:</b> Tuesday, July 22, 2014 5:21 AM<br><b>To:</b> <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br><b>Cc:</b> Roman Goldshtein<br><b>Subject:</b> [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Hello Guys,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I would like to implement a debug purpose flow of performing NVME disk IO bypassing the StorPort under Windows 8.1.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I thought about implementing it using “IOCTL_SCSI_MINIPORT” on host side and adding code under “</span><span style='font-family:"Verdana","sans-serif";color:#010001;background:white;mso-highlight:white'>NVM_WRITE</span><span style='font-family:"Verdana","sans-serif";color:#010001'>/<span style='background:white;mso-highlight:white'> NVM_</span>READ” </span><span style='color:#1F497D'>on the target side.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I wonder whether anyone here has done it before and can share insights.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Moreover, Is there any particular reason why NVME READ/WRITE commands are not implanted via IOCTL interface, except security ?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thank you,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:14.0pt;color:#1F497D'>Sagi Bar</span><span style='color:#1F497D'><br>Test & Tools Staff FW Engineer<br></span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";color:#1F497D'><img border=0 width=61 height=12 id="Picture_x0020_1" src="cid:image001.png@01CFA731.777C88C0" alt="cid:image001.png@01CEA3CD.FE1957E0"><br></span><span style='color:#7F7F7F'>7 Atir Yeda St, Kfar – Saba 44425, Israel<br></span><span style='color:#1F497D'><a href="mailto:sagi.bar@SanDisk.com">sagi.bar@SanDisk.com</a></span><span style='color:#7F7F7F'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><div class=MsoNormal align=center style='text-align:center'><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><hr size=2 width="100%" align=center></span></div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:gray'><br>PLEASE NOTE: The information contained in this electronic mail message is intended only for the use of the designated recipient(s) named above. If the reader of this message is not the intended recipient, you are hereby notified that you have received this message in error and that any review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify the sender by telephone or e-mail (as shown above) immediately and destroy any and all copies of this message in your possession (whether hard copies or electronically stored copies).</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p></div></body></html>