diff options
author | Marc Carino <marc.ceeeee@gmail.com> | 2013-12-16 18:15:53 -0800 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-12-17 07:03:14 -0500 |
commit | f78dea064c5f7de07de4912a6e5136dbc443d614 (patch) | |
tree | a2254dfd1558a40bbe5058f29d2a506c08045ffb /include | |
parent | b8bd6dc36186fe99afa7b73e9e2d9a98ad5c4865 (diff) | |
download | linux-f78dea064c5f7de07de4912a6e5136dbc443d614.tar.gz linux-f78dea064c5f7de07de4912a6e5136dbc443d614.tar.bz2 linux-f78dea064c5f7de07de4912a6e5136dbc443d614.zip |
libata: implement ATA_HORKAGE_NO_NCQ_TRIM and apply it to Micro M500 SSDs
Certain drives cannot handle queued TRIM commands properly, even
though support is indicated in the IDENTIFY DEVICE buffer. This patch
allows for disabling the commands for the affected drives and apply it
to the Micron/Crucial M500 SSDs which exhibit incorrect protocol
behavior when issued queued TRIM commands, which could lead to silent
data corruption.
tj: Merged two unnecessarily split patches and made minor edits
including shortening horkage name.
Signed-off-by: Marc Carino <marc.ceeeee@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/g/1387246554-7311-1-git-send-email-marc.ceeeee@gmail.com
Cc: stable@vger.kernel.org # 3.12+
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/libata.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index 0e23c26485f4..9b503376738f 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -418,6 +418,7 @@ enum { ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */ ATA_HORKAGE_ATAPI_DMADIR = (1 << 18), /* device requires dmadir */ + ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */ /* DMA mask for user DMA control: User visible values; DO NOT renumber */ |