libata: Allow NCQ TRIM to be enabled or disabled with a module parameter
authorMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 May 2015 01:54:18 +0000 (21:54 -0400)
committerTejun Heo <tj@kernel.org>
Tue, 5 May 2015 13:30:18 +0000 (09:30 -0400)
We have started seeing SSD firmware updates introduce support for queued
TRIM. Sadly, in most cases this support is completely untested and can
lead to either errors or data corruption.

Add two libata force flags that can be used to either enable or disable
queued TRIM support.

Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Tejun Heo <tj@kernel.org>
Documentation/kernel-parameters.txt
drivers/ata/libata-core.c

index 01aa47d3b6ab607e6a66f2a6a827b4b1afe4da73..14a4be114cdcc286ab6df2e3b95f1d1a81826740 100644 (file)
@@ -1755,6 +1755,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 
                        * [no]ncq: Turn on or off NCQ.
 
+                       * [no]ncqtrim: Turn off queued DSM TRIM.
+
                        * nohrst, nosrst, norst: suppress hard, soft
                           and both resets.
 
index f6cb1f1b30b7466278d47dae09bc959db24dfef1..8c1f0742cc1a5a75441569809e1cb83643620a6a 100644 (file)
@@ -6472,6 +6472,8 @@ static int __init ata_parse_force_one(char **cur,
                { "3.0Gbps",    .spd_limit      = 2 },
                { "noncq",      .horkage_on     = ATA_HORKAGE_NONCQ },
                { "ncq",        .horkage_off    = ATA_HORKAGE_NONCQ },
+               { "noncqtrim",  .horkage_on     = ATA_HORKAGE_NO_NCQ_TRIM },
+               { "ncqtrim",    .horkage_off    = ATA_HORKAGE_NO_NCQ_TRIM },
                { "dump_id",    .horkage_on     = ATA_HORKAGE_DUMP_ID },
                { "pio0",       .xfer_mask      = 1 << (ATA_SHIFT_PIO + 0) },
                { "pio1",       .xfer_mask      = 1 << (ATA_SHIFT_PIO + 1) },