All of lore.kernel.org
 help / color / mirror / Atom feed
* Is there a reliable way to ID a SSD?
@ 2010-12-30 15:58 Greg Freemyer
  2011-01-03 19:30 ` Peter M. Petrakis
  0 siblings, 1 reply; 18+ messages in thread
From: Greg Freemyer @ 2010-12-30 15:58 UTC (permalink / raw)
  To: IDE/ATA development list

All,

Per T13/1699-D Revision 4a (from May 2007) word 217 of the identify
block should be populated with a "1" to identify non-rotating media.

http://www.t13.org/Documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf

Does anyone know if that is a reliable field?

Specifically there are two separate issues:

1) Are all devices reporting a 1 in field 217 non-rotating?
2) Are all production non-rotating devices populating that field with a 1.

Is there some other reliable mechanism for identifying a SSD?


-- 
Greg Freemyer
Head of EDD Tape Extraction and Processing team
Litigation Triage Solutions Specialist
http://www.linkedin.com/in/gregfreemyer
CNN/TruTV Aired Forensic Imaging Demo -
   http://insession.blogs.cnn.com/2010/03/23/how-computer-evidence-gets-retrieved/

The Norcross Group
The Intersection of Evidence & Technology
http://www.norcrossgroup.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2010-12-30 15:58 Is there a reliable way to ID a SSD? Greg Freemyer
@ 2011-01-03 19:30 ` Peter M. Petrakis
  2011-01-03 21:24   ` Greg Freemyer
  0 siblings, 1 reply; 18+ messages in thread
From: Peter M. Petrakis @ 2011-01-03 19:30 UTC (permalink / raw)
  To: IDE/ATA development list

Hi,

On 12/30/2010 10:58 AM, Greg Freemyer wrote:
> All,
> 
> Per T13/1699-D Revision 4a (from May 2007) word 217 of the identify
> block should be populated with a "1" to identify non-rotating media.
> 
> http://www.t13.org/Documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf
> 
> Does anyone know if that is a reliable field?
> 
> Specifically there are two separate issues:
> 
> 1) Are all devices reporting a 1 in field 217 non-rotating?
> 2) Are all production non-rotating devices populating that field with a 1.
> 
> Is there some other reliable mechanism for identifying a SSD?
> 

Not really, the manufacturer needs to adhere to the spec they're claiming
to honor and we should politely notify them when we find that it's inconsistent.
It's technically a firmware bug if it's ATA-8 and that bit isn't set right.

If you're having trouble identifying SSDs pre ATA-8, you can use this simple
patch I introduced a while back.

http://www.spinics.net/lists/linux-ide/msg38944.html

and blacklist the offending drive into reporting itself as SSD when interrogated
via SCSI.

If you search around, you'll find an earlier thread about quirking SSDs by using
heuristics like search for the word "flash" in the device name and other hints but
the patch set never went anywhere. It's a ugly problem, there's so many devices
out there ahead of the spec that are SSD, with no sure fire way to determine that
they really are. Supporting a full blacklist of them would turn libata-core.c into
a dumping ground for potentially 100s of pre ATA-8 storage devices. I don't think
anyone wants to maintain that.

Peter

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-03 19:30 ` Peter M. Petrakis
@ 2011-01-03 21:24   ` Greg Freemyer
  2011-01-03 22:03     ` Peter M. Petrakis
  0 siblings, 1 reply; 18+ messages in thread
From: Greg Freemyer @ 2011-01-03 21:24 UTC (permalink / raw)
  To: Peter M. Petrakis; +Cc: IDE/ATA development list

On Mon, Jan 3, 2011 at 2:30 PM, Peter M. Petrakis
<peter.petrakis@canonical.com> wrote:
> Hi,
>
> On 12/30/2010 10:58 AM, Greg Freemyer wrote:
>> All,
>>
>> Per T13/1699-D Revision 4a (from May 2007) word 217 of the identify
>> block should be populated with a "1" to identify non-rotating media.
>>
>> http://www.t13.org/Documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf
>>
>> Does anyone know if that is a reliable field?
>>
>> Specifically there are two separate issues:
>>
>> 1) Are all devices reporting a 1 in field 217 non-rotating?
>> 2) Are all production non-rotating devices populating that field with a 1.
>>
>> Is there some other reliable mechanism for identifying a SSD?
>>
>
> Not really, the manufacturer needs to adhere to the spec they're claiming
> to honor and we should politely notify them when we find that it's inconsistent.
> It's technically a firmware bug if it's ATA-8 and that bit isn't set right.
>
> If you're having trouble identifying SSDs pre ATA-8, you can use this simple
> patch I introduced a while back.
>
> http://www.spinics.net/lists/linux-ide/msg38944.html
>
> and blacklist the offending drive into reporting itself as SSD when interrogated
> via SCSI.
>
> If you search around, you'll find an earlier thread about quirking SSDs by using
> heuristics like search for the word "flash" in the device name and other hints but
> the patch set never went anywhere. It's a ugly problem, there's so many devices
> out there ahead of the spec that are SSD, with no sure fire way to determine that
> they really are. Supporting a full blacklist of them would turn libata-core.c into
> a dumping ground for potentially 100s of pre ATA-8 storage devices. I don't think
> anyone wants to maintain that.
>
> Peter

Peter,

Thanks.  I have a client that needs to recognize SSDs from userspace
and I missed the ABI.

I was looking for the userspace ABI to be in /sys/block like the
topology stuff is, so I missed the userspace ABI and was confused.

Now that I've found in, I'm confused by ata_id_rotation_rate()
trusting the rotation_rate of 1 being valid for all ATA 7 and ATA 8
devices.

=== cut & paste from ata.h
static inline int ata_id_rotation_rate(const u16 *id)
{
        u16 val = id[217];
        if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff)
                return 0;

        if (val > 1 && val < 0x401)
                return 0;

        return val;
}
===

I thought rotational_rate set to 1 to indicate a SSD was only valid
for ATA8 devices?

I'll have to go back and read the older thread you talked about, but
is there a plan for ATA7 devices?  Is it in general to trust word 217,
or what.

If I find a SSD device that is not setting word 217 correctly, and I
want to get the kernel to address it correctly, should I just add to
your list and cause ATA_HORKAGE_NONROT to be set?

Or is the concern it will get unwieldy too fast if everyone used that list?

Thanks
Greg

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-03 21:24   ` Greg Freemyer
@ 2011-01-03 22:03     ` Peter M. Petrakis
  2011-01-03 22:50       ` Greg Freemyer
  2011-01-06 16:10       ` Jan Ceuleers
  0 siblings, 2 replies; 18+ messages in thread
From: Peter M. Petrakis @ 2011-01-03 22:03 UTC (permalink / raw)
  To: IDE/ATA development list



On 01/03/2011 04:24 PM, Greg Freemyer wrote:
> On Mon, Jan 3, 2011 at 2:30 PM, Peter M. Petrakis
> <peter.petrakis@canonical.com> wrote:
>> Hi,
>>
>> On 12/30/2010 10:58 AM, Greg Freemyer wrote:
>>> All,
>>>
>>> Per T13/1699-D Revision 4a (from May 2007) word 217 of the identify
>>> block should be populated with a "1" to identify non-rotating media.
>>>
>>> http://www.t13.org/Documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf
>>>
>>> Does anyone know if that is a reliable field?
>>>
>>> Specifically there are two separate issues:
>>>
>>> 1) Are all devices reporting a 1 in field 217 non-rotating?
>>> 2) Are all production non-rotating devices populating that field with a 1.
>>>
>>> Is there some other reliable mechanism for identifying a SSD?
>>>
>>
>> Not really, the manufacturer needs to adhere to the spec they're claiming
>> to honor and we should politely notify them when we find that it's inconsistent.
>> It's technically a firmware bug if it's ATA-8 and that bit isn't set right.
>>
>> If you're having trouble identifying SSDs pre ATA-8, you can use this simple
>> patch I introduced a while back.
>>
>> http://www.spinics.net/lists/linux-ide/msg38944.html
>>
>> and blacklist the offending drive into reporting itself as SSD when interrogated
>> via SCSI.
>>
>> If you search around, you'll find an earlier thread about quirking SSDs by using
>> heuristics like search for the word "flash" in the device name and other hints but
>> the patch set never went anywhere. It's a ugly problem, there's so many devices
>> out there ahead of the spec that are SSD, with no sure fire way to determine that
>> they really are. Supporting a full blacklist of them would turn libata-core.c into
>> a dumping ground for potentially 100s of pre ATA-8 storage devices. I don't think
>> anyone wants to maintain that.
>>
>> Peter
> 
> Peter,
> 
> Thanks.  I have a client that needs to recognize SSDs from userspace
> and I missed the ABI.
> 
> I was looking for the userspace ABI to be in /sys/block like the
> topology stuff is, so I missed the userspace ABI and was confused.

Ah you mean /sys/block/sda/queue/rotational.

> Now that I've found in, I'm confused by ata_id_rotation_rate()
> trusting the rotation_rate of 1 being valid for all ATA 7 and ATA 8
> devices.
> 
> === cut & paste from ata.h
> static inline int ata_id_rotation_rate(const u16 *id)
> {
>         u16 val = id[217];
>         if (ata_id_major_version(id) < 7 || val == 0 || val == 0xffff)
>                 return 0;
> 
>         if (val > 1 && val < 0x401)
>                 return 0;
> 
>         return val;
> }
> ===

Hmm, that may be but that value still needs to be valid, meaning, it's
either 1, or it's an RPM value. What does your raw IDENTIFY DEVICE output
say? This code accomidates ATA-7 vendors who had current draft specs to
"do the right thing" with the reserved block.

> I thought rotational_rate set to 1 to indicate a SSD was only valid
> for ATA8 devices?

Strictly speaking yes.

> I'll have to go back and read the older thread you talked about, but
> is there a plan for ATA7 devices?  Is it in general to trust word 217,
> or what.

Good thing I keep notes:
http://marc.info/?l=linux-ide&m=126677421807814&w=2

As you can see, my trivial patch is loosely based off of it.

> If I find a SSD device that is not setting word 217 correctly, and I
> want to get the kernel to address it correctly, should I just add to
> your list and cause ATA_HORKAGE_NONROT to be set?

Yup, just add the device name as reported by IDENTIFY DEVICE to the list.
Then the rotational bit in sysfs should be set.

> Or is the concern it will get unwieldy too fast if everyone used that list?

If you look at my post, you'll note that no one ever commented on it, and I
got too busy to follow up. So I really don't know where the maintainers stand.
The speculation of unwieldy quirk table management is my own opinion, though
I'm sure it's on everyone's mind. I know I wouldn't want to be in that position.
Just look at the quirk tables the sound codec drivers have to put up with to
get an idea of the volume of devices libata would deal with if it officially
supported this quirk.

> Thanks
> Greg

Peter


> --
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-03 22:03     ` Peter M. Petrakis
@ 2011-01-03 22:50       ` Greg Freemyer
  2011-01-04 15:47         ` Mark Lord
  2011-01-05  0:05         ` Martin K. Petersen
  2011-01-06 16:10       ` Jan Ceuleers
  1 sibling, 2 replies; 18+ messages in thread
From: Greg Freemyer @ 2011-01-03 22:50 UTC (permalink / raw)
  To: Peter M. Petrakis; +Cc: IDE/ATA development list, Mark Lord

On Mon, Jan 3, 2011 at 5:03 PM, Peter M. Petrakis
<peter.petrakis@canonical.com> wrote:
<snip>
>> Thanks.  I have a client that needs to recognize SSDs from userspace
>> and I missed the ABI.
>>
>> I was looking for the userspace ABI to be in /sys/block like the
>> topology stuff is, so I missed the userspace ABI and was confused.
>
> Ah you mean /sys/block/sda/queue/rotational.

I missed that one.  Never thought to look in queue. :(

(I don't know what SSD has to do with queue, but okay.  Please don't
answer, I've read some of the discussion before and promptly forgot
it.)

In the mean time I've found the hdparm also looks at word 217 and
reports SSD devices.  It has apparently been doing that since v9.12 or
so.  (spring 2009).

My current concern is that the logic is slowly diverging between the
kernel 2.6.36 implementation and the hdparm v9.36 implementation.

Mark (added to cc),

Would it be better if hdparm looked at /sys/block/sda/queue/rotational
instead of just using word 217 of the identify block?

The current divergence is:

1) The kernel routine  ata_id_rotation_rate() (in ata.h) is only
trusting  word 217 if its ATA7 or higher.

http://lxr.linux.no/#linux+v2.6.36/include/linux/ata.h#L799

2) There have been a couple proposed kernel patches to libata-scsi.c
to quirk in a HORKAGE flag to set the rotation_rate to 1 (meaning SSD)
for some known devices.  I don't see those being ACKed yet, but if one
ever gets in, hdparm will diverge from the kernels info since its
going straight to the identify block for its info.

Or is queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q) somehow setting
word 217 for future identify block usage by hdparm?  (I have no idea
what that call does.  It was in Bart's ATANG patch, but not Peter's.)

Bart's atang PATCH: http://marc.info/?l=linux-ide&m=126677421807814&w=2

Peter's patch: http://www.spinics.net/lists/linux-ide/msg38944.html

I hope one of the approaches goes in.  As I said I have a userspace
app that really needs to know if its talking to a  traditional
rotating device or a SSD, so I suspect we'll be sending in quirk
patches as we start lab testing devices.

Thanks
Greg

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-03 22:50       ` Greg Freemyer
@ 2011-01-04 15:47         ` Mark Lord
  2011-01-04 16:22           ` Greg Freemyer
  2011-01-05  0:05         ` Martin K. Petersen
  1 sibling, 1 reply; 18+ messages in thread
From: Mark Lord @ 2011-01-04 15:47 UTC (permalink / raw)
  To: Greg Freemyer; +Cc: Peter M. Petrakis, IDE/ATA development list

On 11-01-03 05:50 PM, Greg Freemyer wrote:
>
> Would it be better if hdparm looked at /sys/block/sda/queue/rotational
> instead of just using word 217 of the identify block?
>
> The current divergence is:
>
> 1) The kernel routine  ata_id_rotation_rate() (in ata.h) is only
> trusting  word 217 if its ATA7 or higher.
>
> http://lxr.linux.no/#linux+v2.6.36/include/linux/ata.h#L799
>
> 2) There have been a couple proposed kernel patches to libata-scsi.c
> to quirk in a HORKAGE flag to set the rotation_rate to 1 (meaning SSD)
> for some known devices.  I don't see those being ACKed yet, but if one
> ever gets in, hdparm will diverge from the kernels info since its
> going straight to the identify block for its info.

That's what hdparm is for.  It reads only from the identify block
for most of the -I output, so that we (kernel developers) can see
exactly what the drive itself is reporting.

This reporting is what makes it useful, rather than simply parroting
whatever is already reported (or not) in /sys/

Cheers

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-04 15:47         ` Mark Lord
@ 2011-01-04 16:22           ` Greg Freemyer
  0 siblings, 0 replies; 18+ messages in thread
From: Greg Freemyer @ 2011-01-04 16:22 UTC (permalink / raw)
  To: Mark Lord; +Cc: Peter M. Petrakis, IDE/ATA development list

On Tue, Jan 4, 2011 at 10:47 AM, Mark Lord <kernel@teksavvy.com> wrote:
> On 11-01-03 05:50 PM, Greg Freemyer wrote:
>>
>> Would it be better if hdparm looked at /sys/block/sda/queue/rotational
>> instead of just using word 217 of the identify block?
>>
>> The current divergence is:
>>
>> 1) The kernel routine  ata_id_rotation_rate() (in ata.h) is only
>> trusting  word 217 if its ATA7 or higher.
>>
>> http://lxr.linux.no/#linux+v2.6.36/include/linux/ata.h#L799
>>
>> 2) There have been a couple proposed kernel patches to libata-scsi.c
>> to quirk in a HORKAGE flag to set the rotation_rate to 1 (meaning SSD)
>> for some known devices.  I don't see those being ACKed yet, but if one
>> ever gets in, hdparm will diverge from the kernels info since its
>> going straight to the identify block for its info.
>
> That's what hdparm is for.  It reads only from the identify block
> for most of the -I output, so that we (kernel developers) can see
> exactly what the drive itself is reporting.
>
> This reporting is what makes it useful, rather than simply parroting
> whatever is already reported (or not) in /sys/
>
> Cheers

Interesting to know.  Maybe the man page could be even more explicit about that.

ie. it currently says:

===
-I     Request identification info directly from the drive, which is
displayed in a new expanded format with considerably more detail than
with the older -i flag.

===

Maybe an additional sentence or two like::

---
This explicitly avoids all kernel quirk logic, thus -I is reporting
exactly what the drive reports and may not agree with other kernel
ABI's which are typically impacted by various kernel quirk logic.  In
some cases when decoding the Identify Block, it will decode and report
information regardless of the ATA  standard supported.
---

I gather that last sentence from the fact hdparm is decoding word 217
for all drives, even though it is not defined until ATA8, but glancing
at the source, in other situations it appears to take the ATA standard
for the drive into account during the identify block decoding.

Thanks
Greg

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-03 22:50       ` Greg Freemyer
  2011-01-04 15:47         ` Mark Lord
@ 2011-01-05  0:05         ` Martin K. Petersen
  1 sibling, 0 replies; 18+ messages in thread
From: Martin K. Petersen @ 2011-01-05  0:05 UTC (permalink / raw)
  To: Greg Freemyer; +Cc: Peter M. Petrakis, IDE/ATA development list, Mark Lord

>>>>> "Greg" == Greg Freemyer <greg.freemyer@gmail.com> writes:

Greg> In the mean time I've found the hdparm also looks at word 217 and
Greg> reports SSD devices.  It has apparently been doing that since
Greg> v9.12 or so.  (spring 2009).

Yes. And the Linux kernel has had the sysfs parameter since 2.6.29 which
came out around the same time.


Greg> My current concern is that the logic is slowly diverging between
Greg> the kernel 2.6.36 implementation and the hdparm v9.36
Greg> implementation.

As Mark said: The whole point of hdparm is to talk directly to the
device. There never was convergence, nor should there be.


Greg> 1) The kernel routine ata_id_rotation_rate() (in ata.h) is only
Greg> trusting word 217 if its ATA7 or higher.

The standards bodies are glacially slow (ACS-2 still hasn't been
ratified, although it's close. Again. Maybe). Consequently most device
vendors "backport" features from the drafts. But obviously they can't
and won't report compliance with an unfinished standard.

There are plenty of SSD drives out there which claim ATA7 compliance and
which support word 217. The reason we have a version check in the first
place is to guard against legacy devices which have inadvertently put
garbage in word 217.

We have had the rotational flag in place for a couple of years and have
had very few reports about devices misrepresenting themselves. So I'm
not entirely convinced we need quirk handling for this. Your friendly
kernel developers already made sure the rotational flag can be
overridden from user space.

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-03 22:03     ` Peter M. Petrakis
  2011-01-03 22:50       ` Greg Freemyer
@ 2011-01-06 16:10       ` Jan Ceuleers
       [not found]         ` <AANLkTin1ZjPmbk1M=9-SGStU7zLUozwxX7Ddtu53xNE2@mail.gmail.com>
  2011-01-06 19:23         ` Martin K. Petersen
  1 sibling, 2 replies; 18+ messages in thread
From: Jan Ceuleers @ 2011-01-06 16:10 UTC (permalink / raw)
  To: Peter M. Petrakis; +Cc: IDE/ATA development list

[-- Attachment #1: Type: text/plain, Size: 446 bytes --]

On 03/01/11 23:03, Peter M. Petrakis wrote:
> Ah you mean /sys/block/sda/queue/rotational.

A few data points:

- Four rotational disks in my server are correctly reported as such.

- The rotational disk in my laptop is as well.

- The Intel SSD in my set-top box is reported correctly as non-rotational.

- However, the CompactFlash card in my broadband router is incorrectly 
reported as rotational. I attach lshw for this system.

Cheers, Jan

[-- Attachment #2: lshw.txt --]
[-- Type: text/plain, Size: 10214 bytes --]

skr03
    description: Computer
    width: 32 bits
  *-core
       description: Motherboard
       physical id: 0
     *-memory
          description: System memory
          physical id: 0
          size: 497MiB
     *-cpu
          product: Geode(TM) Integrated Processor by AMD PCS
          vendor: Advanced Micro Devices [AMD]
          physical id: 1
          bus info: cpu@0
          version: 5.10.2
          size: 500MHz
          width: 32 bits
          capabilities: fpu fpu_exception wp de pse tsc msr cx8 pge cmov clflush mmx mmxext 3dnowext 3dnow up
        *-cache:0
             description: L1 cache
             physical id: 0
             size: 128KiB
        *-cache:1
             description: L2 cache
             physical id: 1
             size: 128KiB
     *-pci
          description: Host bridge
          product: CS5536 [Geode companion] Host Bridge
          vendor: Advanced Micro Devices [AMD]
          physical id: 100
          bus info: pci@0000:00:01.0
          version: 33
          width: 32 bits
          clock: 66MHz
          configuration: latency=248
        *-generic
             description: Entertainment encryption device
             product: Geode LX AES Security Block
             vendor: Advanced Micro Devices [AMD]
             physical id: 1.2
             bus info: pci@0000:00:01.2
             version: 00
             width: 32 bits
             clock: 66MHz
             capabilities: bus_master
             configuration: driver=Geode LX AES latency=0
             resources: irq:10 memory:a0000000-a0003fff
        *-network:0 DISABLED
             description: Ethernet interface
             product: VT6105M [Rhine-III]
             vendor: VIA Technologies, Inc.
             physical id: 6
             bus info: pci@0000:00:06.0
             logical name: eth0
             version: 96
             serial: 00:00:24:cc:96:90
             size: 10MB/s
             capacity: 100MB/s
             width: 32 bits
             clock: 33MHz
             capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
             configuration: autonegotiation=on broadcast=yes driver=via-rhine driverversion=1.4.3 duplex=half latency=176 link=no maxlatency=8 mingnt=3 multicast=yes port=MII speed=10MB/s
             resources: irq:11 ioport:e100(size=256) memory:a0004000-a00040ff
        *-network:1 DISABLED
             description: Ethernet interface
             product: VT6105M [Rhine-III]
             vendor: VIA Technologies, Inc.
             physical id: 7
             bus info: pci@0000:00:07.0
             logical name: eth1
             version: 96
             serial: 00:00:24:cc:96:91
             size: 10MB/s
             capacity: 100MB/s
             width: 32 bits
             clock: 33MHz
             capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
             configuration: autonegotiation=on broadcast=yes driver=via-rhine driverversion=1.4.3 duplex=half latency=176 link=no maxlatency=8 mingnt=3 multicast=yes port=MII speed=10MB/s
             resources: irq:5 ioport:e200(size=256) memory:a0004100-a00041ff
        *-network:2
             description: Ethernet interface
             product: VT6105M [Rhine-III]
             vendor: VIA Technologies, Inc.
             physical id: 8
             bus info: pci@0000:00:08.0
             logical name: eth2
             version: 96
             serial: 00:00:24:cc:96:92
             size: 10MB/s
             capacity: 100MB/s
             width: 32 bits
             clock: 33MHz
             capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
             configuration: autonegotiation=on broadcast=yes driver=via-rhine driverversion=1.4.3 duplex=half ip=10.20.0.1 latency=176 link=no maxlatency=8 mingnt=3 multicast=yes port=MII speed=10MB/s
             resources: irq:9 ioport:e300(size=256) memory:a0004200-a00042ff
        *-network:3
             description: Ethernet interface
             product: VT6105M [Rhine-III]
             vendor: VIA Technologies, Inc.
             physical id: 9
             bus info: pci@0000:00:09.0
             logical name: eth3
             version: 96
             serial: 00:00:24:cc:96:93
             size: 100MB/s
             capacity: 100MB/s
             width: 32 bits
             clock: 33MHz
             capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
             configuration: autonegotiation=on broadcast=yes driver=via-rhine driverversion=1.4.3 duplex=full latency=176 link=yes maxlatency=8 mingnt=3 multicast=yes port=MII speed=100MB/s
             resources: irq:12 ioport:e400(size=256) memory:a0004300-a00043ff
        *-network:4
             description: Ethernet interface
             product: RTL-8139/8139C/8139C+
             vendor: Realtek Semiconductor Co., Ltd.
             physical id: e
             bus info: pci@0000:00:0e.0
             logical name: eth4
             version: 20
             serial: 00:0a:fa:30:00:a4
             size: 100MB/s
             capacity: 100MB/s
             width: 32 bits
             clock: 33MHz
             capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
             configuration: autonegotiation=on broadcast=yes driver=8139cp driverversion=1.3 duplex=full latency=176 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII promiscuous=yes speed=100MB/s
             resources: irq:10 ioport:e500(size=256) memory:a0004400-a00044ff
        *-network:5
             description: Wireless interface
             product: AR922X Wireless Network Adapter
             vendor: Atheros Communications Inc.
             physical id: 11
             bus info: pci@0000:00:11.0
             logical name: wlan0
             version: 01
             serial: 00:80:48:65:d8:48
             width: 32 bits
             clock: 66MHz
             capabilities: pm bus_master cap_list ethernet physical wireless logical
             configuration: broadcast=yes driver=ath9k latency=168 multicast=yes wireless=IEEE 802.11abgn
             resources: irq:15 memory:a0010000-a001ffff
        *-isa
             description: ISA bridge
             product: CS5536 [Geode companion] ISA
             vendor: Advanced Micro Devices [AMD]
             physical id: 14
             bus info: pci@0000:00:14.0
             version: 03
             width: 32 bits
             clock: 66MHz
             capabilities: isa
             configuration: latency=64
             resources: ioport:6000(size=8192) ioport:1400(size=256) ioport:1000(size=512)
        *-ide
             description: IDE interface
             product: CS5536 [Geode companion] IDE
             vendor: Advanced Micro Devices [AMD]
             physical id: 14.2
             bus info: pci@0000:00:14.2
             logical name: scsi0
             version: 01
             width: 32 bits
             clock: 66MHz
             capabilities: ide bus_master emulated
             configuration: driver=pata_amd latency=0
             resources: irq:0 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:e000(size=16)
           *-disk
                description: ATA Disk
                product: SanDisk SDCFH2-0
                physical id: 0.0.0
                bus info: scsi@0:0.0.0
                logical name: /dev/sda
                version: HDX
                serial: 014205J0808G1218
                size: 3919MiB (4110MB)
                capabilities: removable
                configuration: ansiversion=5
              *-medium
                   physical id: 0
                   logical name: /dev/sda
                   size: 3919MiB (4110MB)
                   capabilities: partitioned partitioned:dos
                   configuration: signature=0009d403
                 *-volume:0
                      description: Linux filesystem partition
                      vendor: Linux
                      physical id: 1
                      logical name: /dev/sda1
                      logical name: /
                      version: 1.0
                      serial: 198bbce8-57d4-4b24-8732-c6bd1f56dc81
                      size: 3638MiB
                      capacity: 3638MiB
                      capabilities: primary bootable ext2 initialized
                      configuration: filesystem=ext2 modified=2011-01-06 17:06:24 mount.fstype=ext2 mount.options=rw,relatime,errors=remount-ro mounted=2010-12-21 19:56:30 state=mounted
                 *-volume:1
                      description: Extended partition
                      physical id: 2
                      logical name: /dev/sda2
                      size: 244MiB
                      capacity: 244MiB
                      capabilities: primary extended partitioned partitioned:extended
                    *-logicalvolume
                         description: Linux swap / Solaris partition
                         physical id: 5
                         logical name: /dev/sda5
                         capacity: 244MiB
                         capabilities: nofs
        *-usb:0
             description: USB Controller
             product: CS5536 [Geode companion] OHC
             vendor: Advanced Micro Devices [AMD]
             physical id: 15
             bus info: pci@0000:00:15.0
             version: 02
             width: 32 bits
             clock: 66MHz
             capabilities: bus_master cap_list
             configuration: driver=ohci_hcd latency=0
             resources: irq:7 memory:a0020000-a0020fff
        *-usb:1
             description: USB Controller
             product: CS5536 [Geode companion] EHC
             vendor: Advanced Micro Devices [AMD]
             physical id: 15.1
             bus info: pci@0000:00:15.1
             version: 02
             width: 32 bits
             clock: 66MHz
             capabilities: bus_master cap_list
             configuration: driver=ehci_hcd latency=0
             resources: irq:7 memory:a0021000-a0021fff

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
       [not found]         ` <AANLkTin1ZjPmbk1M=9-SGStU7zLUozwxX7Ddtu53xNE2@mail.gmail.com>
@ 2011-01-06 18:40           ` Greg Freemyer
  2011-01-06 18:55             ` Jeff Garzik
  2011-01-06 19:31             ` Martin K. Petersen
  0 siblings, 2 replies; 18+ messages in thread
From: Greg Freemyer @ 2011-01-06 18:40 UTC (permalink / raw)
  To: Jan Ceuleers; +Cc: Peter M. Petrakis, IDE/ATA development list, Jeff Garzik

(resend, sorry for the duplicate)

Jeff,

As the maintainer, can you provide direction as to how quirks should
be maintained for the rotating disk flag (as reflected in
/sys/block/sda/queue/rotational).

There is Bart's patch, Peter's patch, and Martin says it can be
overridden from userspace (I'm not sure which tool,  nor do I know if
there is already a userspace quirks table to add to.).

Bart's atang PATCH: http://marc.info/?l=linux-ide&m=126677421807814&w=2

Peter's patch: http://www.spinics.net/lists/linux-ide/msg38944.html

Greg

> On Thu, Jan 6, 2011 at 11:10 AM, Jan Ceuleers <jan.ceuleers@computer.org> wrote:
>>
>> On 03/01/11 23:03, Peter M. Petrakis wrote:
>>>
>>> Ah you mean /sys/block/sda/queue/rotational.
>>
>> A few data points:
>>
>> - Four rotational disks in my server are correctly reported as such.
>>
>> - The rotational disk in my laptop is as well.
>>
>> - The Intel SSD in my set-top box is reported correctly as non-rotational.
>>
>> - However, the CompactFlash card in my broadband router is incorrectly reported as rotational. I attach lshw for this system.
>>
>> Cheers, Jan
>
>
>
> --
> Greg Freemyer
> Head of EDD Tape Extraction and Processing team
> Litigation Triage Solutions Specialist
> http://www.linkedin.com/in/gregfreemyer
> CNN/TruTV Aired Forensic Imaging Demo -
>    http://insession.blogs.cnn.com/2010/03/23/how-computer-evidence-gets-retrieved/
>
> The Norcross Group
> The Intersection of Evidence & Technology
> http://www.norcrossgroup.com



--
Greg Freemyer
Head of EDD Tape Extraction and Processing team
Litigation Triage Solutions Specialist
http://www.linkedin.com/in/gregfreemyer
CNN/TruTV Aired Forensic Imaging Demo -
   http://insession.blogs.cnn.com/2010/03/23/how-computer-evidence-gets-retrieved/

The Norcross Group
The Intersection of Evidence & Technology
http://www.norcrossgroup.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 18:40           ` Greg Freemyer
@ 2011-01-06 18:55             ` Jeff Garzik
  2011-01-06 19:31             ` Martin K. Petersen
  1 sibling, 0 replies; 18+ messages in thread
From: Jeff Garzik @ 2011-01-06 18:55 UTC (permalink / raw)
  To: Greg Freemyer
  Cc: Jan Ceuleers, Peter M. Petrakis, IDE/ATA development list,
	Tejun Heo

On 01/06/2011 01:40 PM, Greg Freemyer wrote:
> (resend, sorry for the duplicate)
>
> Jeff,
>
> As the maintainer, can you provide direction as to how quirks should
> be maintained for the rotating disk flag (as reflected in
> /sys/block/sda/queue/rotational).
>
> There is Bart's patch, Peter's patch, and Martin says it can be
> overridden from userspace (I'm not sure which tool,  nor do I know if
> there is already a userspace quirks table to add to.).
>
> Bart's atang PATCH: http://marc.info/?l=linux-ide&m=126677421807814&w=2
>
> Peter's patch: http://www.spinics.net/lists/linux-ide/msg38944.html

There are a long list of non-rotational devices that were produced 
before the ATA standard grew a standard method of reporting that device 
attribute.

That implies any approach individually listing products will create a 
very, very long horkage list containing all ATA flash drives that anyone 
ever produced.

Alternately, scanning for the "SSD" string does not seem very useful, 
because it will only match a tiny minority of first-run products that 
(a) call themselves "SSD" in marketing literature but (b) do not 
indicate proper rotational attributes in the IDENTIFY page.  Because 
while non-rotational products have been around for a very long time, 
"SSDs" as they are a currently known are new.

It seems like a project to retroactively identify ATA non-rotational 
products will be long and on-going, and would be better suited to a 
userspace package such as Tejun's storage-fixup: 
http://git.kernel.org/?p=linux/kernel/git/tj/storage-fixup.git

	Jeff




^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 16:10       ` Jan Ceuleers
       [not found]         ` <AANLkTin1ZjPmbk1M=9-SGStU7zLUozwxX7Ddtu53xNE2@mail.gmail.com>
@ 2011-01-06 19:23         ` Martin K. Petersen
  2011-01-06 20:49           ` Jan Ceuleers
  1 sibling, 1 reply; 18+ messages in thread
From: Martin K. Petersen @ 2011-01-06 19:23 UTC (permalink / raw)
  To: Jan Ceuleers; +Cc: Peter M. Petrakis, IDE/ATA development list

>>>>> "Jan" == Jan Ceuleers <jan.ceuleers@computer.org> writes:

Jan> - However, the CompactFlash card in my broadband router is
Jan>   incorrectly reported as rotational.

Hardly surprising for something that's designed for use in cameras...

Chances are, though, that unlike "real" SSDs your CF is slow enough that
it actually benefits from being treated like a rotational device.

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 18:40           ` Greg Freemyer
  2011-01-06 18:55             ` Jeff Garzik
@ 2011-01-06 19:31             ` Martin K. Petersen
  2011-01-06 20:11               ` Greg Freemyer
  2011-01-06 20:41               ` Jeff Garzik
  1 sibling, 2 replies; 18+ messages in thread
From: Martin K. Petersen @ 2011-01-06 19:31 UTC (permalink / raw)
  To: Greg Freemyer
  Cc: Jan Ceuleers, Peter M. Petrakis, IDE/ATA development list,
	Jeff Garzik

>>>>> "Greg" == Greg Freemyer <greg.freemyer@gmail.com> writes:

Greg> As the maintainer, can you provide direction as to how quirks
Greg> should be maintained for the rotating disk flag (as reflected in
Greg> /sys/block/sda/queue/rotational).

Greg> There is Bart's patch, Peter's patch, and Martin says it can be
Greg> overridden from userspace (I'm not sure which tool,

# echo 0 > /sys/block/sda/queue/rotational


Greg> nor do I know if there is already a userspace quirks table to add
Greg> to.).

I agree with Jeff that Tejun's tool would be the right place. And
there's always udev...

But the question is whether it's worth the hassle since there a many of
these devices out there and it is unclear whether treating them as
non-rotational is a win. If you can provide some compelling performance
improvement numbers for a particular device we can look into adding a
quirk for it.

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 19:31             ` Martin K. Petersen
@ 2011-01-06 20:11               ` Greg Freemyer
  2011-01-06 20:41               ` Jeff Garzik
  1 sibling, 0 replies; 18+ messages in thread
From: Greg Freemyer @ 2011-01-06 20:11 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Jan Ceuleers, Peter M. Petrakis, IDE/ATA development list,
	Jeff Garzik

On Thu, Jan 6, 2011 at 2:31 PM, Martin K. Petersen
<martin.petersen@oracle.com> wrote:
>>>>>> "Greg" == Greg Freemyer <greg.freemyer@gmail.com> writes:
>
> Greg> As the maintainer, can you provide direction as to how quirks
> Greg> should be maintained for the rotating disk flag (as reflected in
> Greg> /sys/block/sda/queue/rotational).
>
> Greg> There is Bart's patch, Peter's patch, and Martin says it can be
> Greg> overridden from userspace (I'm not sure which tool,
>
> # echo 0 > /sys/block/sda/queue/rotational
>
>
> Greg> nor do I know if there is already a userspace quirks table to add
> Greg> to.).
>
> I agree with Jeff that Tejun's tool would be the right place. And
> there's always udev...
>
> But the question is whether it's worth the hassle since there a many of
> these devices out there and it is unclear whether treating them as
> non-rotational is a win. If you can provide some compelling performance
> improvement numbers for a particular device we can look into adding a
> quirk for it.

My application is a little different, so it may be that my need of a
quirk table would not be accepted into a general tool, but if I have
to build it, it might as well benefit others.

But my real need is to truly know if the device is rotating or
non-rotating.  I don't need to know about performance issues per se.

My use is for disk sanitizing / wiping.  If a disk is a rotating disk,
my client currently implements a sector by sector wiping process.
They sanitize on the order of thousands of computers a month this way
via a dedicated wiping appliance.  (the original PC is booted via PXE,
so the hardware specifics and BIOSes vary greatly over the universe of
sanitized machines.)

As I'm sure you know, a SSD cannot be safely sanitized this way.

Thus, they need to identify SSDs / flash to ensure that a Security
Erase is attempted and if that fails for whatever reason (including
the command being blocked by the local bios) the technician is
notified that the wiping effort failed.

Note, I've seen several BIOSes that do not allow the Security Erase
command to be passed to the drive, so we have avoided using this
method for rotating media thus far, but for SSD there is no choice.

fyi: all of those thousands of machines are shipped to a central
location for auditing after being sanitized in the field.  At the
central location, the technicians re-perform the wiping process and
can attempt to identify SSDs that were mis-categorized and add them to
a quirks table. It is not a perfect process, but it is as good as we
have for now.

Greg

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 19:31             ` Martin K. Petersen
  2011-01-06 20:11               ` Greg Freemyer
@ 2011-01-06 20:41               ` Jeff Garzik
  2011-01-06 21:54                 ` Martin K. Petersen
  1 sibling, 1 reply; 18+ messages in thread
From: Jeff Garzik @ 2011-01-06 20:41 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Greg Freemyer, Jan Ceuleers, Peter M. Petrakis,
	IDE/ATA development list

On Thu, Jan 6, 2011 at 2:31 PM, Martin K. Petersen
<martin.petersen@oracle.com> wrote:
>>>>>> "Greg" == Greg Freemyer <greg.freemyer@gmail.com> writes:
> But the question is whether it's worth the hassle since there a many of
> these devices out there and it is unclear whether treating them as
> non-rotational is a win. If you can provide some compelling performance
> improvement numbers for a particular device we can look into adding a
> quirk for it.

In an ideal world where information and engineers are cost-free...

if a device is non-rotational, we should know this, whether it's
ancient compact flash, or gigabyte's DRAM-based ATA device, or modern
SSD.  It shouldn't be a question of whether or not treating a
non-rotational device as a non-rotational device is performance win --
because if you're asking that question, it might imply areas where we
are making invalid assumptions about certain classes of non-rotational
devices :)

So while the two approaches presented are not remotely optimal in
terms of identifying all the non-rotational ATA devices out in the
field, I do think there is value in accurately flagging all
non-rotational devices as such.  But it is, IMO, not important to have
this list in the kernel; if such a project is undertaken, a userspace
pkg such as storage-fixup seems more appropriate.

     Jeff

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 19:23         ` Martin K. Petersen
@ 2011-01-06 20:49           ` Jan Ceuleers
  2011-01-06 22:02             ` Martin K. Petersen
  0 siblings, 1 reply; 18+ messages in thread
From: Jan Ceuleers @ 2011-01-06 20:49 UTC (permalink / raw)
  To: Martin K. Petersen; +Cc: Peter M. Petrakis, IDE/ATA development list

On 06/01/11 20:23, Martin K. Petersen wrote:
> Jan>  - However, the CompactFlash card in my broadband router is
> Jan>    incorrectly reported as rotational.
>
> Hardly surprising for something that's designed for use in cameras...
>
> Chances are, though, that unlike "real" SSDs your CF is slow enough that
> it actually benefits from being treated like a rotational device.

Thanks. But performance is not my primary concern or I wouldn't have 
chosen a system consisting of low-performance components ;-) (the 
CompactFlash card is only one example; others include the 500MHz Geode 
CPU, Via Rhine NICs, a tiny amount of RAM etc). I care more about low 
power consumption and the system has to be only just fast enough for my 
needs.

I was just trying to provide some data points for discussion purposes.

Cheers, Jan

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 20:41               ` Jeff Garzik
@ 2011-01-06 21:54                 ` Martin K. Petersen
  0 siblings, 0 replies; 18+ messages in thread
From: Martin K. Petersen @ 2011-01-06 21:54 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: Martin K. Petersen, Greg Freemyer, Jan Ceuleers,
	Peter M. Petrakis, IDE/ATA development list

>>>>> "Jeff" == Jeff Garzik <jeff@garzik.org> writes:

Jeff> In an ideal world where information and engineers are cost-free...

Oh, yeah...


Jeff> if a device is non-rotational, we should know this, whether it's
Jeff> ancient compact flash, or gigabyte's DRAM-based ATA device, or
Jeff> modern SSD.  It shouldn't be a question of whether or not treating
Jeff> a non-rotational device as a non-rotational device is performance
Jeff> win -- because if you're asking that question, it might imply
Jeff> areas where we are making invalid assumptions about certain
Jeff> classes of non-rotational devices :)

Well, there were a few attempts at getting SSD performance metrics into
ATA. They failed for political/marketing reasons. Even if we had gotten
the metrics we wanted I'm sure most vendors would have indicated that
"this one goes to eleven".

All we have is non-rotational which means "seeks are cheaper than on
rotating media". And for a lot of older/slower flash devices it's
actually a win to do merging because command latency can be quite
high. So it's not necessarily a win to go non-rotational. Which is why I
suggested looking at numbers instead of blindly whitelisting every ATA
flash device known to man.

However, now it appears that what Greg really needs is a
supports_secure_erase flag...

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: Is there a reliable way to ID a SSD?
  2011-01-06 20:49           ` Jan Ceuleers
@ 2011-01-06 22:02             ` Martin K. Petersen
  0 siblings, 0 replies; 18+ messages in thread
From: Martin K. Petersen @ 2011-01-06 22:02 UTC (permalink / raw)
  To: Jan Ceuleers
  Cc: Martin K. Petersen, Peter M. Petrakis, IDE/ATA development list

>>>>> "Jan" == Jan Ceuleers <jan.ceuleers@computer.org> writes:

>> Chances are, though, that unlike "real" SSDs your CF is slow enough
>> that it actually benefits from being treated like a rotational
>> device.

Jan> Thanks. But performance is not my primary concern or I wouldn't
Jan> have chosen a system consisting of low-performance components ;-)
Jan> (the CompactFlash card is only one example; others include the
Jan> 500MHz Geode CPU, Via Rhine NICs, a tiny amount of RAM etc). I care
Jan> more about low power consumption and the system has to be only just
Jan> fast enough for my needs.

There are "real" SSDs in CompactFlash form factor and they do fare much
better than the consumer cards. Made a significant difference on my
Geode boxes, anyway. But most importantly they have much better write
endurance than the camera cards which is the reason I originally got
them.

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2011-01-06 22:05 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-30 15:58 Is there a reliable way to ID a SSD? Greg Freemyer
2011-01-03 19:30 ` Peter M. Petrakis
2011-01-03 21:24   ` Greg Freemyer
2011-01-03 22:03     ` Peter M. Petrakis
2011-01-03 22:50       ` Greg Freemyer
2011-01-04 15:47         ` Mark Lord
2011-01-04 16:22           ` Greg Freemyer
2011-01-05  0:05         ` Martin K. Petersen
2011-01-06 16:10       ` Jan Ceuleers
     [not found]         ` <AANLkTin1ZjPmbk1M=9-SGStU7zLUozwxX7Ddtu53xNE2@mail.gmail.com>
2011-01-06 18:40           ` Greg Freemyer
2011-01-06 18:55             ` Jeff Garzik
2011-01-06 19:31             ` Martin K. Petersen
2011-01-06 20:11               ` Greg Freemyer
2011-01-06 20:41               ` Jeff Garzik
2011-01-06 21:54                 ` Martin K. Petersen
2011-01-06 19:23         ` Martin K. Petersen
2011-01-06 20:49           ` Jan Ceuleers
2011-01-06 22:02             ` Martin K. Petersen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.