linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: willy@linux.intel.com (Matthew Wilcox)
Subject: LBA Range handling
Date: Wed, 23 Nov 2011 16:34:47 -0500	[thread overview]
Message-ID: <20111123213447.GB14291@linux.intel.com> (raw)
In-Reply-To: <5AC4D6A45304E048A30F105EB302760902CBB0AF@CORPEXCH1.na.ads.idt.com>

On Wed, Nov 23, 2011@10:53:37AM -0800, Kong, Kwok wrote:
> One of the purpose of the BA Range Type is to allow a driver not to
> "export" a LBA range that the driver does not understand. i.e. if a SSD
> is used in a RAID system previously,  the LBA range is configured to be
> "RAID".  When a non-RAID driver is loaded by mistake, the non-RAID
> driver should not export this LBA Range to the OS and hence the RAID
> data cannot be overwritten unexpectedly.
> 
> When a SSD is brand new, the LBA range type is going to be "Reserved" as
> it has never been used.

umm ... it is?  We should probably get the committee to change that
type 0 from Reserved (which means you can't use it) to 'Unspecified'
or something ...

> In the current linux driver, only the hidden attributes is checked.
> Should more checking be done ?
> 
> In the Windows driver, we (IDT, Intel and Sandforace) have decided to
> use the following algorithms to handle the LBA Range:
> 
> - Retrieve LBA Range entries via Get Features (ID#3) for each one of the
> namespaces;
> - Exam the first LBA Range entry of a given namespace;
> 
> if (NLB == Namespace Size)
> {
>     if (Type == 00b)
>     {
> 	  // This is a brand new disk for this driver	
>         Issue a Set Features (ID#3) command:
> 		- Type = 1 (Filesystem)
> 		- Attributes = 1 (can be overwritten, visible)
> 		- Starting LBA = 0
> 		- Number of Logical Blocks = size of the Name Space
>         Export NameSpace to the OS
>     }
>     else if (Type == 01b)
>     {
>         If (Attributes_bit_1 == 0)
>             Do not "export" NS to the OS
>         else
>         {
>             if (Attributes_bit_0 == 0)
>                "export" NS to the OS as "Read Only"
>             else
>                "export" NS to the OS
>         }
>     }
>     else
>     {
>         Do not "export" the NS to the OS;
>     }
> }
> else
> {
>     Do not "export" the NS to the OS;
> }
> 
> 
> Do you see any problem with this algorithms ?

Yes.  If the type of the LBA range is 'page cache', for example, then
it needs to be exported to the OS in order for the OS to use it.  Also,
I think you have the sense of the hidden bit wrong.  The only change
I'd make to my current algorithm is that we should probably obey the
read-only bit.

Also, I don't know how to handle multiple LBA range types yet ... they
ought to be handled through the Linux partition mechanism, but it doesn't
have any concept of devices providing their own partitioning scheme yet.

> If not, then should the linux driver match the Windows driver algorithm
> ?
> 
> Thanks
> 
> -Kwok
> 
> _______________________________________________
> Linux-nvme mailing list
> Linux-nvme at lists.infradead.org
> http://merlin.infradead.org/mailman/listinfo/linux-nvme

  reply	other threads:[~2011-11-23 21:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-23 18:53 LBA Range handling Kong, Kwok
2011-11-23 21:34 ` Matthew Wilcox [this message]
2011-11-23 21:47   ` Kong, Kwok
2011-11-24 18:06     ` Matthew Wilcox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111123213447.GB14291@linux.intel.com \
    --to=willy@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).