tcm_fc: Remove use of transport_do_task_sg_chain()
With the modern target core, se_cmd->t_data_sg already points to a sglist that covers the whole command. So task_sg chaining is needless overhead and obfuscation -- instead of splicing the split up task sglists back into one list, we can just use the original list directly. Signed-off-by: Roland Dreier <roland@purestorage.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Acked-by: Kiran Patil <Kiran.patil@intel.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
Родитель
bebe2fdc17
Коммит
e182d6828d
|
@ -215,20 +215,10 @@ int ft_write_pending(struct se_cmd *se_cmd)
|
||||||
*/
|
*/
|
||||||
if ((ep->xid <= lport->lro_xid) &&
|
if ((ep->xid <= lport->lro_xid) &&
|
||||||
(fh->fh_r_ctl == FC_RCTL_DD_DATA_DESC)) {
|
(fh->fh_r_ctl == FC_RCTL_DD_DATA_DESC)) {
|
||||||
if (se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) {
|
if ((se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) &&
|
||||||
/*
|
lport->tt.ddp_target(lport, ep->xid,
|
||||||
* cmd may have been broken up into multiple
|
se_cmd->t_data_sg,
|
||||||
* tasks. Link their sgs together so we can
|
se_cmd->t_data_nents))
|
||||||
* operate on them all at once.
|
|
||||||
*/
|
|
||||||
transport_do_task_sg_chain(se_cmd);
|
|
||||||
cmd->sg = se_cmd->t_tasks_sg_chained;
|
|
||||||
cmd->sg_cnt =
|
|
||||||
se_cmd->t_tasks_sg_chained_no;
|
|
||||||
}
|
|
||||||
if (cmd->sg && lport->tt.ddp_target(lport, ep->xid,
|
|
||||||
cmd->sg,
|
|
||||||
cmd->sg_cnt))
|
|
||||||
cmd->was_ddp_setup = 1;
|
cmd->was_ddp_setup = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -576,9 +576,6 @@ int ft_register_configfs(void)
|
||||||
}
|
}
|
||||||
fabric->tf_ops = ft_fabric_ops;
|
fabric->tf_ops = ft_fabric_ops;
|
||||||
|
|
||||||
/* Allowing support for task_sg_chaining */
|
|
||||||
fabric->tf_ops.task_sg_chaining = 1;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup default attribute lists for various fabric->tf_cit_tmpl
|
* Setup default attribute lists for various fabric->tf_cit_tmpl
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -228,7 +228,7 @@ void ft_recv_write_data(struct ft_cmd *cmd, struct fc_frame *fp)
|
||||||
"payload, Frame will be dropped if"
|
"payload, Frame will be dropped if"
|
||||||
"'Sequence Initiative' bit in f_ctl is"
|
"'Sequence Initiative' bit in f_ctl is"
|
||||||
"not set\n", __func__, ep->xid, f_ctl,
|
"not set\n", __func__, ep->xid, f_ctl,
|
||||||
cmd->sg, cmd->sg_cnt);
|
se_cmd->t_data_sg, se_cmd->t_data_nents);
|
||||||
/*
|
/*
|
||||||
* Invalidate HW DDP context if it was setup for respective
|
* Invalidate HW DDP context if it was setup for respective
|
||||||
* command. Invalidation of HW DDP context is requited in both
|
* command. Invalidation of HW DDP context is requited in both
|
||||||
|
|
Загрузка…
Ссылка в новой задаче