small ata driver enhancement project for someone

Greg Freemyer greg.freemyer at
Mon Jan 3 16:05:58 EST 2011


Please ignore.  the code is there (see ata_id_rotation_rate()), I just
missed it somewhere along the line.

I'm still walking thru it, so I'm not sure of the details.

=== detail if you care

The most recent update is for 2.6.37 and it introduced the first quirk.

  eg. The new flag is ATA_HORKAGE_NONROT  which indicates a pre-ATA8
device that is a SSD.

In theory, SSDs should report ATA8 and use field 217 as I said.  That
logic is also already present.

But it looks to me that ata_id_rotation_rate() is trusting that field
for ATA7 as well, which I don't understand.

Also, it seems to be reported to userspace through a SCSI command
simulation, which is probably fine, but I was looking for it in
/sys/block.  To me it seems inconsistent to have the topology abi in
/sys/block, but the rotating vs. ssd abi via a scsi command emulation.


On Mon, Jan 3, 2011 at 2:21 PM, Greg Freemyer <greg.freemyer at> wrote:
> All,
> I don't think the kernel is yet tracking SSD vs Rotational.
> It would be a nice patch if someone would do that.  I don't maintain
> the subsystem, but I assume it would be accepted if well done.  You
> could model your patch by looking at how the drive topology patches
> were done.  Effectively this patch would do the same thing.
> (Petersen wrote those, so I think these are them:
> My thoughts:
> ===> How to tell
> For SATA:
> 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.
> IIRC: The identify block is read during drive query time, so you
> should not have to actually generate any i/o.  Just patch the portion
> of the kernel working with the identify block.  ie. See the topology
> patch.
> For SCSI - no idea, but I'd be surprised if they did not already have
> a scsi flag for it.  The topology patch also handled SCSI, so it's
> just a matter of finding the scsi field to use.
> ===> Quirks
> Lots of manufacturers don't follow the specs on something like this,
> so a quirks functionality is typically how the ATA driver handles it.
> ie. If you find a SSD that is not setting the flag, then setup a quirk
> to override the flag.  The quirk table should be based on make & model
> at a minimum, and maybe firmware.
> You should be able to find existing quirk logic, so don't invent your own.
> SCSI seems to be followed much more accurately, so you may not need a
> quirks functionality for it.
> ===> userspace API
> Seems like there should be a "/sys/block/sda/*" file that allows
> userspace to interrogate.  The topology patches added a few of these,
> so one more would be good.
> If you can generate the same data for scsi, maybe just create
> /sys/block/sda/rotation_speed and have it just reflect exactly word
> 217 of the identify block.
> Greg

Greg Freemyer
Head of EDD Tape Extraction and Processing team
Litigation Triage Solutions Specialist
CNN/TruTV Aired Forensic Imaging Demo -

The Norcross Group
The Intersection of Evidence & Technology

More information about the Kernelnewbies mailing list