Lines Matching refs:cmd

31 	struct iscsit_cmd *cmd,
35 struct iscsit_conn *conn = cmd->conn;
36 struct iscsi_tmr_req *tmr_req = cmd->tmr_req;
37 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req;
106 struct iscsit_cmd *cmd,
110 struct iscsit_conn *conn = cmd->conn;
112 struct iscsi_tmr_req *tmr_req = cmd->tmr_req;
113 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req;
178 struct iscsit_cmd *cmd,
185 ret = iscsit_remove_cmd_from_connection_recovery(cmd, sess);
198 struct iscsit_cmd *cmd = tmr_req->ref_cmd;
201 if (!cmd->cr) {
203 " is NULL!\n", cmd->init_task_tag);
206 cr = cmd->cr;
213 cmd->stat_sn = cmd->exp_stat_sn = 0;
215 iscsit_task_reassign_remove_cmd(cmd, cr, conn->sess);
218 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list);
221 cmd->i_state = ISTATE_SEND_NOPIN;
222 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state);
227 struct iscsit_cmd *cmd,
232 struct iscsit_conn *conn = cmd->conn;
233 struct se_cmd *se_cmd = &cmd->se_cmd;
239 cmd->cmd_flags &= ~ICF_GOT_DATACK_SNACK;
240 cmd->acked_data_sn = 0;
242 cmd->cmd_flags |= ICF_GOT_DATACK_SNACK;
243 cmd->acked_data_sn = (tmr_req->exp_data_sn - 1);
251 if (cmd->cmd_flags & ICF_GOT_LAST_DATAOUT) {
252 if (!(cmd->se_cmd.transport_state & CMD_T_SENT)) {
255 cmd->init_task_tag, cmd->se_cmd.t_state);
260 cmd->i_state = ISTATE_SEND_STATUS;
261 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state);
269 if (cmd->unsolicited_data) {
270 cmd->unsolicited_data = 0;
272 offset = cmd->next_burst_len = cmd->write_data_done;
275 cmd->se_cmd.data_length) {
277 length = (cmd->se_cmd.data_length - offset);
281 spin_lock_bh(&cmd->r2t_lock);
282 if (iscsit_add_r2t_to_list(cmd, offset, length, 0, 0) < 0) {
283 spin_unlock_bh(&cmd->r2t_lock);
286 cmd->outstanding_r2ts++;
287 spin_unlock_bh(&cmd->r2t_lock);
295 return conn->conn_transport->iscsit_get_dataout(conn, cmd, true);
299 struct iscsit_cmd *cmd,
302 struct iscsit_conn *conn = cmd->conn;
304 struct se_cmd *se_cmd = &cmd->se_cmd;
310 cmd->cmd_flags &= ~ICF_GOT_DATACK_SNACK;
311 cmd->acked_data_sn = 0;
313 cmd->cmd_flags |= ICF_GOT_DATACK_SNACK;
314 cmd->acked_data_sn = (tmr_req->exp_data_sn - 1);
317 if (!(cmd->se_cmd.transport_state & CMD_T_SENT)) {
319 " transport\n", cmd->init_task_tag,
320 cmd->se_cmd.t_state);
327 " from transport\n", cmd->init_task_tag,
328 cmd->se_cmd.t_state);
344 iscsit_attach_datain_req(cmd, dr);
346 cmd->i_state = ISTATE_SEND_DATAIN;
347 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state);
352 struct iscsit_cmd *cmd,
355 struct iscsit_conn *conn = cmd->conn;
357 cmd->i_state = ISTATE_SEND_STATUS;
358 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state);
366 struct iscsit_cmd *cmd = tmr_req->ref_cmd;
369 if (!cmd->cr) {
371 " is NULL!\n", cmd->init_task_tag);
374 cr = cmd->cr;
381 cmd->stat_sn = cmd->exp_stat_sn = 0;
383 iscsit_task_reassign_remove_cmd(cmd, cr, conn->sess);
386 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list);
389 if (cmd->se_cmd.se_cmd_flags & SCF_SENT_CHECK_CONDITION) {
390 cmd->i_state = ISTATE_SEND_STATUS;
391 iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state);
395 switch (cmd->data_direction) {
397 return iscsit_task_reassign_complete_write(cmd, tmr_req);
399 return iscsit_task_reassign_complete_read(cmd, tmr_req);
401 return iscsit_task_reassign_complete_none(cmd, tmr_req);
403 pr_err("Unknown cmd->data_direction: 0x%02x\n",
404 cmd->data_direction);
415 struct iscsit_cmd *cmd;
422 cmd = tmr_req->ref_cmd;
424 cmd->conn = conn;
426 switch (cmd->iscsi_opcode) {
435 " command reallegiance\n", cmd->iscsi_opcode);
443 " ITT: 0x%08x to CID: %hu.\n", cmd->iscsi_opcode,
444 cmd->init_task_tag, conn->cid);
454 int iscsit_tmr_post_handler(struct iscsit_cmd *cmd, struct iscsit_conn *conn)
456 struct iscsi_tmr_req *tmr_req = cmd->tmr_req;
457 struct se_tmr_req *se_tmr = cmd->se_cmd.se_tmr_req;
478 struct iscsit_cmd *cmd,
486 cmd->data_sn = 0;
488 if (cmd->immediate_data)
489 cmd->r2t_offset += (cmd->first_burst_len -
490 cmd->seq_start_offset);
493 cmd->write_data_done -= (cmd->immediate_data) ?
494 (cmd->first_burst_len -
495 cmd->seq_start_offset) :
496 cmd->first_burst_len;
497 cmd->first_burst_len = 0;
501 for (i = 0; i < cmd->pdu_count; i++) {
502 pdu = &cmd->pdu_list[i];
507 if ((pdu->offset >= cmd->seq_start_offset) &&
509 cmd->seq_end_offset)) {
510 cmd->first_burst_len -= pdu->length;
511 cmd->write_data_done -= pdu->length;
516 for (i = 0; i < cmd->seq_count; i++) {
517 seq = &cmd->seq_list[i];
522 cmd->write_data_done -=
524 cmd->first_burst_len = 0;
534 pdu = &cmd->pdu_list[j+seq->pdu_start];
549 struct iscsit_cmd *cmd = tmr_req->ref_cmd;
558 if (cmd->unsolicited_data)
559 iscsit_task_reassign_prepare_unsolicited_dataout(cmd, conn);
582 spin_lock_bh(&cmd->r2t_lock);
583 if (list_empty(&cmd->cmd_r2t_list)) {
584 spin_unlock_bh(&cmd->r2t_lock);
588 list_for_each_entry(r2t, &cmd->cmd_r2t_list, r2t_list) {
637 cmd->r2t_offset -= r2t->xfer_len;
642 cmd->data_sn = 0;
643 cmd->r2t_offset -= (r2t->xfer_len -
644 cmd->next_burst_len);
649 cmd->data_sn = 0;
650 cmd->r2t_offset -= r2t->xfer_len;
652 for (i = 0; i < cmd->pdu_count; i++) {
653 pdu = &cmd->pdu_list[i];
661 cmd->next_burst_len -= pdu->length;
662 cmd->write_data_done -= pdu->length;
671 seq = iscsit_get_seq_holder(cmd, r2t->offset,
674 spin_unlock_bh(&cmd->r2t_lock);
678 cmd->write_data_done -=
685 cmd->seq_send_order--;
691 pdu = &cmd->pdu_list[i+seq->pdu_start];
701 cmd->outstanding_r2ts--;
703 spin_unlock_bh(&cmd->r2t_lock);
717 cmd->cmd_flags &= ~ICF_SENT_LAST_R2T;
718 cmd->r2t_sn = tmr_req->exp_data_sn;
720 spin_lock_bh(&cmd->r2t_lock);
721 list_for_each_entry_safe(r2t, r2t_tmp, &cmd->cmd_r2t_list, r2t_list) {
736 spin_unlock_bh(&cmd->r2t_lock);
741 iscsit_free_r2t(r2t, cmd);
755 * current offset and original offset from cmd->write_data_done
762 cmd->r2t_offset -= r2t->xfer_len;
764 cmd->seq_send_order--;
766 cmd->outstanding_r2ts--;
767 iscsit_free_r2t(r2t, cmd);
769 spin_unlock_bh(&cmd->r2t_lock);