<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=utf-8">
<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:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-believe-normal-left:yes;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        margin-top:3.75pt;
        margin-right:0in;
        margin-bottom:3.75pt;
        margin-left:0in;
        font-size:9.0pt;
        font-family:"Arial",sans-serif;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
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:#44546A;
        font-weight:normal;
        font-style:normal;}
.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 mso 9]><style>p.MsoNormal
        {margin-left:7.5pt;}
</style><![endif]><!--[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="#0563C1" vlink="#954F72" style="margin-left:7.5pt;margin-top:7.5pt;margin-right:7.5pt;margin-bottom:7.5pt">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A">Thanks Carolyn.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A">I agree with your decision to speed up the review of this patch (it’s been outstanding for quite a while now due to the several revisions). The minor, non-functional requests can be modified
 either at a later time or via each individual pull and update. There are several other patches in line, plus the WHQL “test run” to release a driver by mid-year.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A">Suman and Tom,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A">Once you have reviewed and approved this latest revision, let me know and I will push the patch.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A">Ray<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#44546A"><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> Foster, Carolyn D <br>
<b>Sent:</b> Monday, March 14, 2016 4:35 PM<br>
<b>To:</b> suman.p@samsung.com; nvmewin@lists.openfabrics.org<br>
<b>Cc:</b> Robles, Raymond C <raymond.c.robles@intel.com>; tru.nguyen@ssi.samsung.com; judy.brock@ssi.samsung.com; MANOJ THAPLIYAL <m.thapliyal@samsung.com><br>
<b>Subject:</b> RE: Re: [nvmewin] Patch with changes for Namespace Management<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi All,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I have one final patch update, I tried to make minimal changes to speed up the review.  Suman I did not make your suggested changes because they were non-functional changes.  However, I was able to go back and
 update the code to resolve the issues with 0 namespaces.<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 incorporated some additional comments that Tom had made, and they are included as follows:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-right:7.5pt"><span style="color:#1F497D">nvmeInit.c:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-right:7.5pt"><span style="color:#1F497D">Line 1814: Modified condition in function “NVMeInitCallback” from “<=” to “==”.
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-right:7.5pt"><span style="color:#1F497D">Line 1529/1635: Added a condition to check “NumKnownNamespaces == 0” to avoid calling identify ns if no namespaces are present.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-right:7.5pt"><span style="color:#1F497D">nvmeStd.c: Line 3055/3059 – Added a condition to modify the DataBufferSize for all the combinations of CNS value.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-right:15.0pt"><span style="color:#1F497D">nvmeStd.h: Line 83 - Added definition for 4K IDENTIFY_LIST_SIZE<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-right:15.0pt"><span style="color:#1F497D">nvmeStat.c: Line 484 – Added a condition to avoid filling NSID to 0 in case no namespaces are present.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Tom made an additional comment on issues with report luns, and I am not able to recreate the failure. 
<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 password is intelnvme<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">Carolyn<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"></a><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> SUMAN PRAKASH B [<a href="mailto:suman.p@samsung.com">mailto:suman.p@samsung.com</a>]
<br>
<b>Sent:</b> Tuesday, March 08, 2016 3:48 AM<br>
<b>To:</b> Foster, Carolyn D <<a href="mailto:carolyn.d.foster@intel.com">carolyn.d.foster@intel.com</a>>;
<a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br>
<b>Cc:</b> Robles, Raymond C <<a href="mailto:raymond.c.robles@intel.com">raymond.c.robles@intel.com</a>>;
<a href="mailto:tru.nguyen@ssi.samsung.com">tru.nguyen@ssi.samsung.com</a>; <a href="mailto:judy.brock@ssi.samsung.com">
judy.brock@ssi.samsung.com</a>; MANOJ THAPLIYAL <<a href="mailto:m.thapliyal@samsung.com">m.thapliyal@samsung.com</a>><br>
<b>Subject:</b> Re: Re: [nvmewin] Patch with changes for Namespace Management<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Hi Carolyn,</span><o:p></o:p></p>
<p> <o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">We have reviewed the code and the changes look good, apart from the following minor comment:</span><o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">1) File: nvmeStd.c, Function:  NVMeIoctlNamespaceMgmt(), Line no: 3978</span><o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">memset is not required as NVMeAllocatePool() will allocate memory for buffer and memset that buffer to zero.</span><o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Same is applicable for pRMT->pProcGroupTbl in NVMeEnumNumaCores() in nvmeInit.c, line no:370,
<u>which is not part of Intel's patch</u>.</span><o:p></o:p></p>
<p> <o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Anyway, we feel, if there is no other review comments from others, no need for Intel to submit updated patch after correcting the above. Samsung can make these changes when we submit our next
 patch after Intel's NS mgmt patch.</span><o:p></o:p></p>
<p> <o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Thanks,</span><o:p></o:p></p>
<p><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Suman</span><o:p></o:p></p>
<p> <o:p></o:p></p>
<p>------- <b>Original Message</b> -------<o:p></o:p></p>
<p><b>Sender</b> : Foster, Carolyn D<<a href="mailto:carolyn.d.foster@intel.com">carolyn.d.foster@intel.com</a>><o:p></o:p></p>
<p><b>Date</b> : Feb 26, 2016 21:57 (GMT+05:30)<o:p></o:p></p>
<p><b>Title</b> : Re: [nvmewin] Patch with changes for Namespace Management<o:p></o:p></p>
<p> <o:p></o:p></p>
<p class="MsoNormal">Hi all, <o:p></o:p></p>
<p class="MsoNormal">I am sending the updated patch incorporating feedback I received.  The changes are listed below, along with my comments about the feedback I did not address.  The password is intelnvme<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Patch updates:<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>Server 2012 was failing to shut down because of mismatched calls to StorportDeviceBusy and StorportDeviceReady after delete or detach commands.<o:p></o:p></p>
<p style="margin-left:.5in;text-indent:-.25in"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">-</span><span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">NVMeGetNamespaceStatusAndSlot(pDevExt, currentNSID, &lunId); moved inside the below condition.<br>
</span><span style="font-size:10.0pt;font-family:"Courier New"">   if (pNsMgmtDW10->SEL == NAMESPACE_MANAGEMENT_DELETE) { }</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
<p style="margin-left:.5in;text-indent:-.25in"><span style="font-family:"Calibri",sans-serif">-</span><span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">In function:  NVMeIoctlNamespaceMgmt - allocate memory for pNsCtrlsList and free the memory after command completion</span>.
<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>In the Namespace Detach/Delete path – removed unnecessary calls to StorportNotification<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>In functions NVMeCompletionNsAttachment and FormatNVMGetIdentify changed PRP preparation to size of Identify Namespace<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>In function NVMeSetFeaturesCompletion<i> </i>added check for <span style="font-size:10.0pt;font-family:"Courier New"">
SC==INVALID_NAMESPACE_OR_FORMAT</span><o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>In function NVMeSetFeaturesCompletion<i> </i>For the case where NS Mgmt is not supported, nsStatus should be set to ATTACHED<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>In function NVMeSetFeaturesCompletion<i> </i>In the case where NS mgmt is not supported, nsStatus will be "INVALID"<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Suggested feedback I did not incorporate:<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>I was not able to make any improvements to the driver handling for the zero attached namespace case.  If the feedback is that this must be implemented for this patch, I will need two more weeks. 
<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span><span style="font-size:10.0pt;font-family:"Courier New"">pAE->DriverState.NumQueuesSet –</span> I could not find any such field in the driver<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>Check should validate that the SCT is GENERIC_COMMAND_STATUS – I did not change this because I’d have to add a new else condition, and I could not commit to testing that kind of a change.<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>I didn’t make any of the suggested changes to the LBA RANGE buffer size, because again, I could not commit to testing them<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-.25in">-<span style="font-size:7.0pt;font-family:"Times New Roman",serif">         
</span>It is safe to set SEL field  to <span style="font-size:10.0pt;font-family:Consolas">
NAMESPACE_MANAGEMENT_DELETE </span> in the pNsMgmtCmd structure – as far as I can see when stepping through the code we set this, line 4102 in nvmeStd.c<o:p></o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal">Carolyn<o:p></o:p></p>
<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> <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>Foster, Carolyn D<br>
<b>Sent:</b> Friday, January 15, 2016 4:57 PM<br>
<b>To:</b> <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br>
<b>Subject:</b> [nvmewin] Patch with changes for Namespace Management<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal">This patch includes changes to support Namespace Management updates from the NVMe specification 1.2.  This patch implements some fixes for handling non-continuous namespaces, adds handling for attached and detached namespaces, and implements
 new IOCTLs to create, delete, attach and detach namespaces.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have made a detailed overview of the changes in the text file in the attached zip file, the contents are also copied here below. 
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Password is intelnvme<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please let me know if you have any questions.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Carolyn Foster<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This patch includes changes to support Namespace management, including create, delete,
<o:p></o:p></p>
<p class="MsoNormal">attach and detach namespace operations.  The new functionality in this patch was tested
<o:p></o:p></p>
<p class="MsoNormal">using proprietary tools.  We tested on Server 2008 R2, Server 2012 R2 and Windows 8.1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">******************<o:p></o:p></p>
<p class="MsoNormal">Design Assumptions<o:p></o:p></p>
<p class="MsoNormal">******************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">1. The numbering of namespaces need not be consecutive.<o:p></o:p></p>
<p class="MsoNormal">2. The namespace ID can be any number between 1 and 2^32.<o:p></o:p></p>
<p class="MsoNormal">3. A namespace is considered “active” only when it is created and attached to this controller.<o:p></o:p></p>
<p class="MsoNormal">4. A detached namespace, or one that is just created but not yet attached is considered “inactive”.
<o:p></o:p></p>
<p class="MsoNormal">5. A non-existent, or deleted namespace is considered “invalid”.<o:p></o:p></p>
<p class="MsoNormal">6. An active namespace will result in one (and only one) “Online” LUN.<o:p></o:p></p>
<p class="MsoNormal">7. Assuming single-host, and single-controller NVMe system.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">*********************<o:p></o:p></p>
<p class="MsoNormal">Architecture Overview<o:p></o:p></p>
<p class="MsoNormal">*********************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There are four new IOCTLs for namespace management, Create, Delete, Attach and Detach.  An attached
<o:p></o:p></p>
<p class="MsoNormal">namespace will result in a visible LUN to the Windows OS.  The LUN extension table has been updated
<o:p></o:p></p>
<p class="MsoNormal">to have a Namespace status:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">typedef enum _NS_STATUS<o:p></o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal">    INVALID = 0,    //Namespace ID does not exist (not known to controller).<o:p></o:p></p>
<p class="MsoNormal">    INACTIVE,       //Namespace is created, but not attached to controller.<o:p></o:p></p>
<p class="MsoNormal">    ATTACHED        //Namespace is created and attached to controller.<o:p></o:p></p>
<p class="MsoNormal">} NS_STATUS;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In order to properly build the LUN extension table during initialization, we made changes to identify
<o:p></o:p></p>
<p class="MsoNormal">all namespaces, and to determine each namespace’s status.  These changes include new states in the
<o:p></o:p></p>
<p class="MsoNormal">Init State Machine NVMeRnningWaitOnListAttachedNs and NVMeRunningWaitOnListExistingNs.  The updated
<o:p></o:p></p>
<p class="MsoNormal">state machine steps are as follows:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">1. Send an Identify Namespace command with CNS set to 02h. This should return a list of all active (created and attached) namespaces.<o:p></o:p></p>
<p class="MsoNormal">2. Go through the list and update LUN extension entries accordingly, one entry for each namespace. Set all LUN status to online.<o:p></o:p></p>
<p class="MsoNormal">3. Send an Identify Namespace command with CNS set to 10h. This should return a list of all existing namespaces in the system, active and inactive.<o:p></o:p></p>
<p class="MsoNormal">4. Go through the list. <o:p></o:p></p>
<p class="MsoNormal">5. If a corresponding LUN entry exists, skip this step, as this must have been an active namespace that was covered in previous steps.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">LUN extension entries are populated as follows:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When a namespace is created:<o:p></o:p></p>
<p class="MsoNormal">- namespaceId is set.<o:p></o:p></p>
<p class="MsoNormal">- nsStatus is set to “INACTIVE”<o:p></o:p></p>
<p class="MsoNormal">- slotStatus is set to “FREE”<o:p></o:p></p>
<p class="MsoNormal">- identifyData is partially set<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When a namespace is attached:<o:p></o:p></p>
<p class="MsoNormal">- drive is pulled for namespace identify<o:p></o:p></p>
<p class="MsoNormal">- identifyData is set accordingly<o:p></o:p></p>
<p class="MsoNormal">- nsStatus is set to “ATTACHED”<o:p></o:p></p>
<p class="MsoNormal">- slotStatus is set to “ONLINE”<o:p></o:p></p>
<p class="MsoNormal">- ReadOnly is set to FALSE<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When a namespace is detached:<o:p></o:p></p>
<p class="MsoNormal">- nsStatus is set to “INACTIVE”<o:p></o:p></p>
<p class="MsoNormal">- slotStatus is set to “FREE”<o:p></o:p></p>
<p class="MsoNormal">- ReadOnly is set to TRUE<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When a namespace is deleted:<o:p></o:p></p>
<p class="MsoNormal">- The entire LUN extension entry is set to 0.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There are also new reasons for the LUN to be offline:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">typedef enum _LUN_OFFLINE_REASON<o:p></o:p></p>
<p class="MsoNormal">{<o:p></o:p></p>
<p class="MsoNormal">    NOT_OFFLINE,<o:p></o:p></p>
<p class="MsoNormal">    FORMAT_IN_PROGRESS,<o:p></o:p></p>
<p class="MsoNormal">    DETACH_IN_PROGRESS,<o:p></o:p></p>
<p class="MsoNormal">    DELETE_IN_PROGRESS<o:p></o:p></p>
<p class="MsoNormal">    // Add more as needed<o:p></o:p></p>
<p class="MsoNormal">} LUN_OFFLINE_REASON;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When delete or detach requests are made, the driver will call StorportDeviceBusy to pause incoming requests,
<o:p></o:p></p>
<p class="MsoNormal">and the LUN is marked as offline with the appropriate reason.  When a user tries to delete an attached namespace,
<o:p></o:p></p>
<p class="MsoNormal">the driver will first send a detach command, and then the delete command.  
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">*****************<o:p></o:p></p>
<p class="MsoNormal">Known Limitations<o:p></o:p></p>
<p class="MsoNormal">*****************<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">1. If no namepsaces are present, the driver will fail to load.<o:p></o:p></p>
<p class="MsoNormal">2. If an error happens on any one namespace during initialization the driver will fail to load.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The handling for these two scenarios could be strengthened and improved, which we did not get to in this patch.<o:p></o:p></p>
<p> <o:p></o:p></p>
<p> <o:p></o:p></p>
<p> <o:p></o:p></p>
<p> <o:p></o:p></p>
<table class="MsoNormalTable" border="0" cellpadding="0" id="confidentialsignimg">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<p><img border="0" width="520" height="144" id="_x0000_i1025" src="cid:image001.gif@01D17EB8.A58F01B0"><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><img border="0" id="_x0000_i1026" src="http://ext.samsung.net/mailcheck/SeenTimeChecker?do=22f8650517ba68655e9ebd4ee858fbd4c5713e275360f6b7b8a3fd6b4a260c0ed33a9d35f6e1735f20a30c65ae77ad69c7b41e955949e5c8a728c55b39cc59eacf878f9a26ce15a0"><o:p></o:p></span></p>
</div>
</body>
</html>