4

On a brand new Intel NUC (10th gen) with brand new Samsung SSD 860 EVO 250GB RVT04B6Q that SSD yields some WRITE FPDMA QUEUED command failures such as this one:

Nov 28 21:25:26  ata3.00: exception Emask 0x10 SAct 0x60 SErr 0x400100 action 0x6 frozen
Nov 28 21:25:26  ata3.00: irq_stat 0x08000000, interface fatal error
Nov 28 21:25:26  ata3: SError: { UnrecovData Handshk }
Nov 28 21:25:26  ata3.00: failed command: WRITE FPDMA QUEUED
Nov 28 21:25:26  ata3.00: cmd 61/40:28:00:d7:31/00:00:00:00:00/40 tag 5 ncq dma 32768 out 
                          res 40/00:28:00:d7:31/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
Nov 28 21:25:26  ata3.00: status: { DRDY }
Nov 28 21:25:26  ata3.00: failed command: WRITE FPDMA QUEUED
Nov 28 21:25:26  ata3.00: cmd 61/20:30:40:d7:31/00:00:00:00:00/40 tag 6 ncq dma 16384 out 
                          res 40/00:28:00:d7:31/00:00:00:00:00/40 Emask 0x10 (ATA bus error)
Nov 28 21:25:26  ata3.00: status: { DRDY }
Nov 28 21:25:26  ata3: hard resetting link
Nov 28 21:25:27  ata3: SATA link up 6.0 Gbps (SStatus 133 SControl 300) 
Nov 28 21:25:27  ata3.00: supports DRM functions and may not be fully accessible
Nov 28 21:25:27  ata3.00: supports DRM functions and may not be fully accessible
Nov 28 21:25:27  ata3.00: configured for UDMA/133
Nov 28 21:25:27  ata3: EH complete
Nov 28 21:25:27  ata3.00: Enabling discard_zeroes_data

These happen periodically in the order of 20 per day, while only relatively little IO happens. So far the Btrfs fileystem hasn't complained about checksum errors.

So is this just Samsung selling SSDs with poor quality assurance, possibly a bad cable or is a more systematic issue - such as Samsung not implementing commands in a standard conforming way, in its firmware?


Update 2020-01-09:

A brand new replacement Samsung SSD (same model) yields the same errors in that NUC. And with each burst of such errors the CRC_ERROR_COUNT SMART counter is incremented by one.

Opening the NUC shows that the SATA cable is folded (cf. bottom left corner):

NUC folded SATA cable

Perhaps this sharp fold was deliberately applied by Intel during production. But it seems that it's unnecessary. Also if it was applied deliberately, why is there just one fold? I mean, two would make more sense then for symmetry (since the SSD is on top of the main board, i.e. integrated in the top cover). Also, is the 45 degree orientation of the fold optimal? I'm not an electrical engineer thus all this is perhaps completely irrelevant to this problem.

A good way to reproduce this error is to use fio. I mean it also happens during normal usage (e.g. when upgrading/installing packges), but with fio it's easier to reproduce. Example:

fio --rw=randrw --name=lol --bs=128k --direct=1 --filename=/dev/nvme0n1 \
    --numjobs=1 --ioengine=libaio --iodepth=32 --refill_buffers

If you run this - say - 2 times in a row and you don't see this error than this is a pretty good indication that your hardware is good and doesn't have this issue.

4
  • What does smartctl -a return? Dec 7, 2020 at 13:34
  • @EduardoTrápani gist.github.com/gsauthof/76af913c0d03a128c93f809a96904535 - perhaps the CRC_ERROR_Count or POR_Recovery_Count look interesting? Dec 7, 2020 at 20:54
  • 1
    FWIW, I have a similar NUC and have the same cable fold. Also the same errors on a Seagate Firecuda SSHD. I'd been wondering if I'd managed to crimp the cable somehow by trapping it in the case .. but maybe that's less likely if you've got it too...
    – Steve Dee
    Jun 9, 2021 at 16:02
  • had to make some small changes to that to run in Mint: sudo fio --rw=randrw --name=lol --bs=128k --filename=/dev/nvme0n1 --numjobs=1 --ioengine=libaio --iodepth=32 --refill_buffers --size=128k
    – jcollum
    Sep 7, 2021 at 0:16

1 Answer 1

4

So I might be wrong here but I don't have enough rep to comment, so here's my 2cents.

I have a desktop with the same SSD, and get the exact same errors. It's due to a bug with the AMD SATA chipset & Samsung firmware - is it an AMD system? If so, you can disable NCQ with libata.force=noncq in the kernel parameters.

As you saw in the smart report, the CRC_ERROR_COUNT is (one?) of the parameters affected by this. It can either be caused by NCQ & this bug, or faulty SATA cables. So I'd try disabling NCQ first. This will hurt performance, though.

EDIT: Although, I do see some occurances of the problem with Intel controllers too: https://bugzilla.kernel.org/show_bug.cgi?id=203475#c14

12
  • It's an Intel NUC, so no AMD. Regarding disabling NCQ - since that system has another (NVMe) SSD - is it possible to just disable NCQ for a single drive? Dec 7, 2020 at 21:31
  • PS: The SATA cable is included with the NUC barebone kit, i.e. it's kind of integrated with the so called SATA daughtercard which is part of the chassis. I haven't opened the chassis so far (since the SSDs/RAM were pre-installed by the vendor). Dec 7, 2020 at 21:38
  • Since you're getting the error on ata3.00, you can disable it specifically for that port by using libata.force=3.00:noncq
    – NateDev
    Dec 7, 2020 at 22:36
  • FWIW, I've got a brand new replacement Samsung SATA SSD (same model+firmware) and it yields the same errors. Also, every time the exception occurs, the CRC_ERROR_COUNT is incremented by one (new drive was delivered with a zero count). Thus, it's really either a general incompatibility of that firmware/model or the cable/(one of the connectors) is faulty. I'm not 100 % sure whether that NUC-SATA cable even is field-replaceable. Dec 22, 2020 at 11:32
  • 1
    @MikkoRantalainen Apparently some users have the issue only with queued TRIM, some need to disable NCQ entirely. It depends if you have "SEND FPDMA QUEUED" (queued TRIM only) or "WRITE FPDMA QUEUED" (NCQ in general). bugzilla.kernel.org/show_bug.cgi?id=203475#c15 Me personally, I get the latter, and the only fix is to disable NCQ entirely via kernel command line. (Samsung 860 EVO + AMD FX 970 chipset)
    – NateDev
    Jun 12, 2021 at 3:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.