* NVMe Target implementation question
[not found] <CGME20261109110115exchanged5526bf8ab18484e9646fda8aa765aa6@eucas1p1.samsung.com>
@ 2026-11-09 11:01 ` James Swaro
0 siblings, 0 replies; only message in thread
From: James Swaro @ 2026-11-09 11:01 UTC (permalink / raw)
To: linux-nvme@lists.infradead.org; +Cc: Karl Bonde Torp, os@safl.dk
Hi everyone,
I'm writing an NVMe initiator implementation and noticed an oddity in the kernel target implementation. When initializing a request structure in the target for a received message (drivers/nvme/target/core.c:966), the driver is checking whether the flags are set to SGL_METABUF and returning an error if it isn't set to SGL_METABUF. This seems to be incorrect according to the specification, so I wanted to get clarification here first.
According to the NVMe 2.4 Base Specification, section 6.5 & 6.6 (Property semantics), byte 1 containing the PDST/flags is supposed to be cleared to 0h. When clearing that byte on the initiator, this causes the target to return with an invalid command and DNR=1. Is this a case of legacy behavior being preserved from older specifications? Is there some part of the specification which contradicts this that I missed?
Kind regards,
James Swaro
Samsung SDS
^ permalink raw reply [flat|nested] only message in thread