Re: git: c01af41c3c8f - main - ata_da: add quirk to disable NCQ TRIM for Samsung 860/870 SSDs

From: cglogic <cglogic_at_protonmail.com>
Date: Mon, 19 Feb 2024 11:29:28 UTC
On Monday, February 19th, 2024 at 1:03 PM, Andriy Gapon <avg@FreeBSD.org> wrote:

> On 19/02/2024 12:47, cglogic wrote:
> 
> > Hello Andriy,
> > 
> > I use ZFS with autotrim enabled on Samsung 860 PRO connected to Intel AHCI SATA controller for 9 years without any issue.
> 
> 
> I think that it was released in 2018?

You are right, it's 9 years old computer, SSD was added later.

> 
> > Can I disable this quirk locally or have I revert the patch to continue use NCQ TRIM with this SSD?
> 
> 
> I don't think that there is a way to disable the quirk, so you'll have to revert.
> Note that ATA TRIM is still enabled, it's only NCQ TRIM that got disabled.

From my understanding ATA TRIM is non-queued TRIM as opposed to NCQ TRIM.
With only ATA TRIM enabled, drive will have increased latency when large amount of files deleted.

However I'm not sure how ZFS handles TRIMs, maybe it groups several TRIMs and then sends when drive is idle.
Another question is how this affects TRIM enabled swap partition.

In general, if I'm correct here, disabling NCQ TRIM should not be an issue for desktop usage, except for large git repository updates, etc.

> 
> > On Monday, February 19th, 2024 at 12:09 PM, Andriy Gapon avg@FreeBSD.org wrote:
> > 
> > > The branch main has been updated by avg:
> > > 
> > > URL: https://cgit.FreeBSD.org/src/commit/?id=c01af41c3c8fdd570764ff9b6bfbad6ac9ca1664
> > > 
> > > commit c01af41c3c8fdd570764ff9b6bfbad6ac9ca1664
> > > Author: Andriy Gapon avg@FreeBSD.org
> > > 
> > > AuthorDate: 2024-02-19 10:08:12 +0000
> > > Commit: Andriy Gapon avg@FreeBSD.org
> > > 
> > > CommitDate: 2024-02-19 10:08:12 +0000
> > > 
> > > ata_da: add quirk to disable NCQ TRIM for Samsung 860/870 SSDs
> > > 
> > > NCQ TRIM for Samsung 860/870 SSDs results in data corruption on systems
> > > with some SATA controllers.
> > > 
> > > This can be easily reproduced using ZFS which uses TRIM and is able to
> > > detect block content changes.
> > > 
> > > Linux bug report for this issue:
> > > https://bugzilla.kernel.org/show_bug.cgi?id=201693
> > > 
> > > Since at present we can not limit a quirk based on the contorller / SIM,
> > > apply the quirk in all cases.
> > > 
> > > Reviewed by: imp
> > > MFC after: 2 weeks
> > > Differential Revision: https://reviews.freebsd.org/D43961
> > > ---
> > > sys/cam/ata/ata_da.c | 16 ++++++++++++++++
> > > 1 file changed, 16 insertions(+)
> > > 
> > > diff --git a/sys/cam/ata/ata_da.c b/sys/cam/ata/ata_da.c
> > > index f5d3aeca9329..d4a591943307 100644
> > > --- a/sys/cam/ata/ata_da.c
> > > +++ b/sys/cam/ata/ata_da.c
> > > @@ -727,6 +727,22 @@ static struct ada_quirk_entry ada_quirk_table[] =
> > > { T_DIRECT, SIP_MEDIA_FIXED, "", "Samsung SSD 850", "" },
> > > /quirks/ADA_Q_4K | ADA_Q_NCQ_TRIM_BROKEN
> > > },
> > > + {
> > > + /
> > > + * Samsung 860 SSDs
> > > + * 4k optimised, NCQ TRIM broken (normal TRIM fine)
> > > + /
> > > + { T_DIRECT, SIP_MEDIA_FIXED, "", "Samsung SSD 860*", "" },
> > > + /quirks/ADA_Q_4K | ADA_Q_NCQ_TRIM_BROKEN
> > > + },
> > > + {
> > > + /
> > > + * Samsung 870 SSDs
> > > + * 4k optimised, NCQ TRIM broken (normal TRIM fine)
> > > + /
> > > + { T_DIRECT, SIP_MEDIA_FIXED, "", "Samsung SSD 870*", "" },
> > > + /quirks/ADA_Q_4K | ADA_Q_NCQ_TRIM_BROKEN
> > > + },
> > > {
> > > /
> > > * Samsung SM863 Series SSDs (MZ7KM*)
> 
> 
> --
> Andriy Gapon