I saw "ref tag" errors on NVMe devices, starting with 4.18 kernels. The
fix was:
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-linus&id=7809167da5c86fd6bf309b33dee7a797e263342f
On 02/01/2019 10:20 AM, Sebastian Andrzej Siewior wrote:
Hi,
I tried to use T10DIF on a SAS disk(s) behind a LSI SAS3008 controller.
So I enabled type 1 via
sg_format --format --fmtpinfo=2 /dev/sdX
on each disk, waited a few hours. After the operation completed the
disks reported that T10DIF is enabled. I was able to read/write from/to
the disk(s). This was on a v4.14 kernel.
Then I upgraded to v4.19 and things started to fall apart. I was able to
read/write the first LBA but everything after that failed:
|[ .343777] sd 0:0:0:0: [sda] tag#2788 FAILED Result: hostbyte=DID_ABORT driverbyte=DRIVER_SENSE
|[ .345709] sd 0:0:0:0: [sda] tag#2788 Sense Key : Illegal Request [current]
|[ .347481] sd 0:0:0:0: [sda] tag#2788 Add. Sense: Logical block reference tag check failed
|[ .349244] sd 0:0:0:0: [sda] tag#2788 CDB: Read(10) 28 20 00 00 00 04 00 00 08 00
|[ .352766] mpt3sas_cm0: log_info(0x3112043b): originator(PL), code(0x12), sub_code(0x043b)
|[ .354548] sd 0:0:0:0: [sda] tag#2789 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
|[ .356328] sd 0:0:0:0: [sda] tag#2789 Sense Key : Aborted Command [current]
|[ .358105] sd 0:0:0:0: [sda] tag#2789 Add. Sense: Logical block reference tag check failed
|[ .359868] sd 0:0:0:0: [sda] tag#2789 CDB: Write(10) 2a 20 00 00 00 01 00 00 01 00
|
|[ .508308] sd 0:0:0:0: [sda] tag#1180 FAILED Result: hostbyte=DID_ABORT driverbyte=DRIVER_SENSE
|[ .508323] sd 0:0:0:0: [sda] tag#1180 Sense Key : Illegal Request [current]
|[ .508326] sd 0:0:0:0: [sda] tag#1180 Add. Sense: Logical block reference tag check failed
|[ .508328] sd 0:0:0:0: [sda] tag#1180 CDB: Read(10) 28 20 00 00 00 02 00 00 02 00
|[ .508337] mpt3sas_cm0: log_info(0x3112043b): originator(PL), code(0x12), sub_code(0x043b)
|[ .534943] sd 0:0:0:0: [sda] tag#547 FAILED Result: hostbyte=DID_ABORT driverbyte=DRIVER_SENSE
|[ .534949] sd 0:0:0:0: [sda] tag#547 Sense Key : Illegal Request [current]
|[ .534954] sd 0:0:0:0: [sda] tag#547 Add. Sense: Logical block reference tag check failed
|[ .534958] sd 0:0:0:0: [sda] tag#547 CDB: Read(10) 28 20 00 00 00 01 00 00 01 00
|[ .534983] mpt3sas_cm0: log_info(0x3112043b): originator(PL), code(0x12), sub_code(0x043b)
|[ .535876] sd 0:0:0:0: [sda] tag#547 FAILED Result: hostbyte=DID_ABORT driverbyte=DRIVER_SENSE
|[ .535879] sd 0:0:0:0: [sda] tag#547 Sense Key : Illegal Request [current]
|[ .535882] sd 0:0:0:0: [sda] tag#547 Add. Sense: Logical block reference tag check failed
|[ .535884] sd 0:0:0:0: [sda] tag#547 CDB: Read(10) 28 20 00 00 00 03 00 00 01 00
|[ .535899] mpt3sas_cm0: log_info(0x3112043b): originator(PL), code(0x12), sub_code(0x043b)
I went back to v4.14 and the errors disappeared. In v4.19 I was able to
tell mpt3sas to disable T10DIF [0] and then I could read from the disk
again.
Does anyone have an idea what happened between v4.14 and v4.19 that
would explain this?
Since this runs productive I went back and disabled T10DIF.
[0] mpt3sas.prot_mask=2
Sebastian