59fc5ba613
For namespaces with end-to-end protection information, metadata size of exactly 8 bytes, and extended LBA configured, the NVMe driver would calculate the size of the data block incorrectly. The NVMe spec has a special provision for this specific case (8-byte metadata only) and PRACT = 1 that requires that the host does not send the metadata as part of the host memory buffer. To fix this, clean up the calculation of the per-block data transfer size by adding a new extended_lba_size field in the namespace, which represents the total size of data to be transferred per block based on the namespace's configured metadata size and whether it transfers metadata as part of the data buffer. Then add the special case for PRACT = 1 and PI configured and extended LBA in the R/W helper functions. Change-Id: I0b383a58c773cac06e6c018858b57129064c6059 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> |
||
---|---|---|
.. | ||
Makefile | ||
nvme_ctrlr_cmd.c | ||
nvme_ctrlr.c | ||
nvme_internal.h | ||
nvme_ns_cmd.c | ||
nvme_ns.c | ||
nvme_pcie.c | ||
nvme_qpair.c | ||
nvme_quirks.c | ||
nvme_rdma.c | ||
nvme_transport.c | ||
nvme_uevent.c | ||
nvme_uevent.h | ||
nvme.c |