On Mon, Mar 16, 2020 at 09:50:10PM +0530, Krishnamraju Eraparaju wrote:
I'm seeing broken CRCs at NVMeF target while running the below program
at host. Here RDMA transport is SoftiWARP, but I'm also seeing the
same issue with NVMe/TCP aswell.
It appears to me that the same buffer is being rewritten by the
application/ULP before getting the completion for the previous requests.
getting the completion for the previous requests. HW based
HW based trasports(like iw_cxgb4) are not showing this issue because
they copy/DMA and then compute the CRC on copied buffer.
For TCP we can set BDI_CAP_STABLE_WRITES. For RDMA I don't think that
is a good idea as pretty much all RDMA block drivers rely on the
DMA behavior above. The answer is to bounce buffer the data in
SoftiWARP / SoftRoCE.
We already do, see nvme_alloc_ns.