A vendor asks:
I'm trying to understand the RC QP state machine on the client side. I see that finishTransferAfterReply() calls connectRcPeer() which moves the QP to RTR and then to RTS. Does it mean that the QP is ready for RDMA ops only after the S3 reply is received? If yes, I don't understand the PUT/GET object flow:
- The client's QP is in INIT state.
- The client sends a PUT (or GET) object to the server.
- The server sends an S3 response with a token. At this point, the server is still unable to run RDMA ops (because we're still in the INIT state).
- The client gets the response, calls finishTransferAfterReply() and only then the server can run RDMA read, but this is too late.
If my assumptions so far are OK, what will happen during the next S3 request? At this point, the QP is already connected.
A vendor asks: