libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks
authorTejun Heo <tj@kernel.org>
Wed, 2 Sep 2020 16:32:45 +0000 (12:32 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Sep 2020 17:14:30 +0000 (19:14 +0200)
commitdea6f05d372a2117b581e17a3638a72d696ac6aa
tree7391ea98ab368104c49ca7d92e2568ea426c5217
parent3264d781e1ad1e0ffc370c1f14d7d68e288ecaa7
libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks

commit 3b5455636fe26ea21b4189d135a424a6da016418 upstream.

All three generations of Sandisk SSDs lock up hard intermittently.
Experiments showed that disabling NCQ lowered the failure rate significantly
and the kernel has been disabling NCQ for some models of SD7's and 8's,
which is obviously undesirable.

Karthik worked with Sandisk to root cause the hard lockups to trim commands
larger than 128M. This patch implements ATA_HORKAGE_MAX_TRIM_128M which
limits max trim size to 128M and applies it to all three generations of
Sandisk SSDs.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Karthik Shivaram <karthikgs@fb.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/ata/libata-core.c
drivers/ata/libata-scsi.c
include/linux/libata.h