I’m testing our NVMe/TCP initiator for handling C2H_TERM_REQ (PDU type 0x3). In order to test it, I intentionally injected an error to a H2CData PDU by modifying its data offset field DATAO to an invalid value. This error, if detected by the target, will be treated as a fatal transport error with fatal error status FES set to 4 (Data Transfer Out of Range).
When I tested this, I can see SPDK NVMe/TCP target can detect this error and set the FES to value 4 as expected, but when sending C2H_TERM_REQ PDU, it always fails with a message “IC_RESP or TERM_REQ could not write to socket.”, then on host side, the initiator gets the error “Connection reset by peer” when receiving data.
[2021-11-08 00:47:06.795739] tcp.c:1437:nvmf_tcp_h2c_data_hdr_handle: *ERROR*: Queue 3, fes 4, offset 0
[2021-11-08 00:47:06.795879] tcp.c: 837:_tcp_write_pdu: *ERROR*: IC_RESP or TERM_REQ could not write to socket.
What could be the problem here?
Hi. I wanted to use spdk for development of a simple program for ZNS SSDs. Unfortunately this problem occurs in `make` after `./configure --with-shared`
/usr/bin/ld.bfd: cannot find ~/spdk/build/lib/libspdk_event_scheduler.so: No such file or directory
On the other hand, when I do it without `--with-shared` no problem happens.
Do you know of any NVMe SSDs that have CMBs? I've asked Samsung but the rep did not seem to know and asked me to send my question to the samsung support email. I have not heard back yet.
If NVMe SSDs w/ CMBs aren't currently/readily available, what NVMe devices are being used by SPDK to do p2p copies.
Issue Summary: SPDK initiator does not seem to honor Responder Resource value exchanged during RDMA connection establishment
During the MAD Connect sequence for establishing an RDMA IO connection for RoCEv2 (NVMe-over Fabrics), the SPDK initiator provides the following values in the REQ message:
• Initiator Depth: 0
• Responder Resources: 16
The target sends a Connect Reply with the following parameters in the REP message:
• Initiator Depth: 16
• Responder Resources: 16
This should result in the target being able to have 16 outstanding RDMA Read Requests at any time on that IO connection. Based on Ethernet trace analysis, it is observed that the SPDK initiator sends a NAK (Invalid Request) on reception of the 9th RDMA Read Request. If the target is modified to ignore the parameters exchanged in the MAD sequence and hard code the Responder Resources to 8, no issues are observed. What could be causing the SPDK initiator to expect the value of 8 for Responder Resources?