iscsi_initiator and tag opening problem
Matthew Jacob
mj at feral.com
Tue May 24 18:20:27 UTC 2011
>
> it's a CAM thing not PDU/BHS, or at least that is my undertanding.
> myabe it's time to read the RFC again
>
No, what I meant can be seen in the following from iscsi_subr.c:
/*
| map tag option, default is UNTAGGED
*/
switch(csio->tag_action) {
case MSG_SIMPLE_Q_TAG: cmd->attr = iSCSI_TASK_SIMPLE; break;
case MSG_HEAD_OF_Q_TAG: cmd->attr = iSCSI_TASK_HOFQ; break;
case MSG_ORDERED_Q_TAG: cmd->attr = iSCSI_TASK_ORDER; break;
case MSG_ACA_TASK: cmd->attr = iSCSI_TASK_ACA; break;
}
That is, you're translating from CAM to iSCSI task attributes. Or, rather,
iSCSI transport related task attributes. The same thing can be seen in the
isp FibreChannel driver:
if (ttype == REQFLAG_OTAG) {
ttype = FCP_CMND_TASK_ATTR_ORDERED;
} else if (ttype == REQFLAG_HTAG) {
ttype = FCP_CMND_TASK_ATTR_HEAD;
} else {
ttype = FCP_CMND_TASK_ATTR_SIMPLE;
}
((ispreqt7_t *)reqp)->req_task_attribute = ttype;
(yes, mine is skipping ACA, oops)
These are attributes of SAM task management. CAM, like any other SCSI
midlayer, is quite right to attach the specified attribute. Whether the
underlying transport can faithfully support those attributes is another
matter.
The RFC has the following:
3.5.1.1. SCSI-Command
This request carries the SCSI CDB and all the other SCSI execute
command procedure call (see [SAM2]) IN arguments such as task
attributes, Expected Data Transfer Length for one or both transfer
directions
This would imply that iSCSI is supposed to support task attributes.
Now, it turns out that the linux openiscsi implementation only uses the
iSCSI_TASK_SIMPLE attribute, so perhaps the simplest fix here is to just
do that for the FreeBSD initiator driver.
More information about the freebsd-scsi
mailing list