static void isert_cmnd_free(struct iscsi_cmnd *cmnd) { TRACE_ENTRY(); #ifdef CONFIG_SCST_EXTRACHECKS if (unlikely(cmnd->on_write_list || cmnd->on_write_timeout_list)) { struct iscsi_scsi_cmd_hdr *req = cmnd_hdr(cmnd); PRINT_CRIT_ERROR("cmnd %p still on some list?, %x, %x, %x, " "%x, %x, %x, %x", cmnd, req->opcode, req->scb[0], req->flags, req->itt, be32_to_cpu(req->data_length), req->cmd_sn, be32_to_cpu((__force __be32)(cmnd->pdu.datasize))); if (unlikely(cmnd->parent_req)) { struct iscsi_scsi_cmd_hdr *preq = cmnd_hdr(cmnd->parent_req); PRINT_CRIT_ERROR("%p %x %u", preq, preq->opcode, preq->scb[0]); } sBUG(); } #endif if (cmnd->parent_req) isert_release_tx_pdu(cmnd); else isert_release_rx_pdu(cmnd); TRACE_EXIT(); }
static u32 cmnd_write_size(struct iscsi_cmnd *cmnd) { struct iscsi_scsi_cmd_hdr *hdr = cmnd_hdr(cmnd); if (hdr->flags & ISCSI_CMD_WRITE) return be32_to_cpu(hdr->data_length); return 0; }
static u32 cmnd_read_size(struct iscsi_cmnd *cmnd) { struct iscsi_scsi_cmd_hdr *hdr = cmnd_hdr(cmnd); if (hdr->flags & ISCSI_CMD_READ) { struct iscsi_rlength_ahdr *ahdr = (struct iscsi_rlength_ahdr *)cmnd->pdu.ahs; if (!(hdr->flags & ISCSI_CMD_WRITE)) return be32_to_cpu(hdr->data_length); if (ahdr && ahdr->ahstype == ISCSI_AHSTYPE_RLENGTH) return be32_to_cpu(ahdr->read_length); } return 0; }