> I agree with your analysis. This does seem like the right > compromise between totally rewriting the state machine and doing the > byte-wise copy in iser we do now. > > As a side note, I could almost be convinced that having an iser-only > rx state machine would be appropriate. 6 of the 11 states have to Ok, let's see if it is possible without making an earthquake )) > I like your idea about getting rid of ep_malloc and ep_free. That > is the wrong level to do the abstraction. But watch out for > bidi_uaddr. You don't know the size of the read buffer in a > bidirectional command until the AHS has been processed. This comes > after task alloc in the current code, hence the second call to > malloc. In iser this should be a pre-registered buffer maybe, there should be: task_alloc(), task_add_buf(), task_release() or smth. like this, so that adding a buffer amounts either to malloc or getting a pre-registered buffer, while release handles *all* previously allocated buffers. > Let me know if you have questions on any aspects of the current > code. It's not very heavily commented. I'll test your patches when > they're ready. great, i'll start working on that, but it can take some time as i don't have too much bandwidth. Another question, though. As far as i understand, when rdma read due to an r2t request is done, iser_rdma_read_completion() is called and it calls iscsi_scsi_cmd_execute() which may issue more R2Ts if necessary. So we send R2T --> RDMA-Read, then wait for completion, then send another one. This imposes delays between consecutive rdma-reads. If we issue all r2t requests at once (in the correct order, though), we guarantee that there are no gaps (or they are as small as possible) between the data chunks sent from the initiator. Generally, the number of R2T simultaneously outstanding is governed by MaxOutstandingR2Ts, but it is irrelevant in iSER, just as MaxBurstSize is irrelevant. The only limitation on issuing R2Ts is the limitation of the hardware upon the max outstanding RDMA-Read requests. Alexander. |