Skip to contentSkip to conversation

TRIM support in drivers and dm/md?

DISCUSSION Jeff Layton 4 participants 8 messages Nov 4, 2010 – Nov 5, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Good morning,

Do many of the SATA controllers support TRIM? (i.e. pass the TRIM command to the SSD). Does anyone know anything about dm/md supporting TRIM? (I'm thinking LVM and software RAID tools).

Thanks!

Jeff

#1 lore raw
Quoted 4 lines · Jeff Layton

Do many of the SATA controllers support TRIM? (i.e. pass the TRIM command to the SSD). Does anyone know anything about dm/md supporting TRIM? (I'm thinking LVM and software RAID tools).

As far as I know, there's nothing to be done in any SATA controller driver to support TRIM. It's just up to the drive whether it understands the command.

Not sure what the sate of play is with MD/DM and TRIM. It's a bit tricky because some SATA drives will return different garbage from TRIMmed sectors each time they're read. That can hamper a RAID-5/6 rebuild "somewhat".

Signature · 4 lines
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."
#2 lore raw
Quoted 8 lines · Matthew Wilcox
Quoted 4 lines · Jeff Layton

Do many of the SATA controllers support TRIM? (i.e. pass the TRIM command to the SSD). Does anyone know anything about dm/md supporting TRIM? (I'm thinking LVM and software RAID tools).

As far as I know, there's nothing to be done in any SATA controller driver to support TRIM. It's just up to the drive whether it understands the command.

That's the rub. I've heard that many drivers don't understand the command. So I'm curious what drivers do and any experience anyone might have.

Thanks!

#3 lore raw
Quoted 7 lines · Jeff Layton
Quoted 5 lines · Matthew Wilcox
Quoted 4 lines · Jeff Layton

Do many of the SATA controllers support TRIM? (i.e. pass the TRIM command to the SSD). Does anyone know anything about dm/md supporting TRIM? (I'm thinking LVM and software RAID tools).

Quoted 7 lines
Quoted 3 lines

As far as I know, there's nothing to be done in any SATA controller driver to support TRIM. It's just up to the drive whether it understands the command.

That's the rub. I've heard that many drivers don't understand the command. So I'm curious what drivers do and any experience anyone might have.

Note the distinction between "drive" and "driver"... I agree with what Matthew says.

Jeff

#4 lore raw
Quoted 10 lines
Quoted 9 lines
Quoted 9 lines
Quoted 5 lines

Do many of the SATA controllers support TRIM? (i.e. pass the TRIM command to the SSD). Does anyone know anything about dm/md supporting TRIM? (I'm thinking LVM and software RAID tools).

As far as I know, there's nothing to be done in any SATA controller driver to support TRIM. It's just up to the drive whether it understands the command.

Quoted 6 lines
Quoted 3 lines

That's the rub. I've heard that many drivers don't understand the command. So I'm curious what drivers do and any experience anyone might have.

Note the distinction between "drive" and "driver"... I agree with what Matthew says.

Oops - sorry I missed "drive" vs. "driver".

I've heard from other places that drivers need to pass along the TRIM command to the drives but that many drivers don't do this. I assume that the best way to determine if this is accurate is to test the controller drivers or ping the maintainers.

Thanks!

#5 lore raw
Quoted 19 lines · Jeff Layton
Quoted 11 lines
Quoted 10 lines
Quoted 10 lines
Quoted 5 lines

Do many of the SATA controllers support TRIM? (i.e. pass the TRIM command to the SSD). Does anyone know anything about dm/md supporting TRIM? (I'm thinking LVM and software RAID tools).

As far as I know, there's nothing to be done in any SATA controller driver to support TRIM. It's just up to the drive whether it understands
the command.

Quoted 7 lines
Quoted 3 lines

That's the rub. I've heard that many drivers don't understand the command. So I'm curious what drivers do and any experience anyone might have.

Note the distinction between "drive" and "driver"... I agree with what Matthew says.

Quoted 6 lines

Oops - sorry I missed "drive" vs. "driver".

I've heard from other places that drivers need to pass along the TRIM command to the drives but that many drivers don't do this. I assume that the best way to determine if this is accurate is to test the controller drivers or ping the maintainers.

I'd object to the words "many" and "drivers" :)

The general rule for all kernel SATA drivers is to support all ATA commands, including future, unknown commands not invented yet.

That's because kernel SATA drivers deal primarily with the sending/receiving from hardware an opaque data bundle -- the ATA taskfile -- rather than create a software system that requires new code in each driver, for each new ATA command.

That's the ideal and, if you obtained a SATA controller in the past 5 years or so, your controller (ahci, sata_sil24, others) supports TRIM just fine because it is a generic ATA taskfile transport and nothing more.

Some now-uncommon controllers have problems with new ATA commands, either due to (a) they are complex, firmware-driven RAID-esque beasts, or (b) they have an internal command table. And I imagine some early SATA<->PATA bridge chips probably get confused as well. But those are the minority, and getting less frequent by the day.

Note in all of the above I say "controller" rather than "driver". I know of no _driver_ that prevents TRIM, where the underlying controller hardware supports it.

For the controllers that don't support TRIM, the error behavior should be something predictable and consistent like a command abort.

Jeff

#6 lore raw

sata_sil didn't support trim the last time I checked (the hardware can do it though). sata_sil24 does, though, along with ahci, sata_mv, etc..

Cheers

#7 lore raw
Quoted 3 lines · Mark Lord

sata_sil didn't support trim the last time I checked (the hardware can do it though).
sata_sil24 does, though, along with ahci, sata_mv, etc..

The recent sata_mv bugfix should be noted of course...