Re: [PATCH v3 11/13] nvmet-tcp: add NVMe over TCP target driver

Sagi Grimberg
2018-11-25T09:13:04Z

>> + if (!cmd || queue->state == NVMET_TCP_Q_DISCONNECTING) {
>> + cmd = nvmet_tcp_fetch_send_command(queue);
>> + if (unlikely(!cmd))
>> + return 0;
>> + }
>> +
>> + if (cmd->state == NVMET_TCP_SEND_DATA_PDU) {
>> + ret = nvmet_try_send_data_pdu(cmd);
>> + if (ret <= 0)
>> + goto done_send;
>> + }
>> +
>> + if (cmd->state == NVMET_TCP_SEND_DATA) {
>> + ret = nvmet_try_send_data(cmd);
>> + if (ret <= 0)
>> + goto done_send;
>> + }
>> +
>> + if (cmd->state == NVMET_TCP_SEND_DDGST) {
>> + ret = nvmet_try_send_ddgst(cmd);
>> + if (ret <= 0)
>> + goto done_send;
>> + }
>> +
>> + if (cmd->state == NVMET_TCP_SEND_R2T) {
>> + ret = nvmet_try_send_r2t(cmd, last_in_batch);
>> + if (ret <= 0)
>> + goto done_send;
>> + }
>> +
>> + if (cmd->state == NVMET_TCP_SEND_RESPONSE)
>> + ret = nvmet_try_send_response(cmd, last_in_batch);
>
> Use a switch statement?

The intent would be such that the state would transition with
the progression of the routine...

...

The rest of the comments will be addressed in the next submission..