Commit 1edcdb49 authored by Andy Grover's avatar Andy Grover Committed by Nicholas Bellinger

target: Change target_submit_cmd() to return void

Retval not very useful, and may even be harmful. Once submitted, fabrics
should expect a sense error if anything goes wrong. All fabrics checking
of this retval are useless or broken:

fc checks it just to emit more debug output.
ib_srpt trickles retval up, then it is ignored.
qla2xxx trickles it up, which then causes a bug because the abort goto
in qla_target.c thinks cmd hasn't been sent to target.

Just returning nothing is best.
Signed-off-by: default avatarAndy Grover <agrover@redhat.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 95fe1ee4
...@@ -1657,7 +1657,7 @@ EXPORT_SYMBOL(transport_handle_cdb_direct); ...@@ -1657,7 +1657,7 @@ EXPORT_SYMBOL(transport_handle_cdb_direct);
* This may only be called from process context, and also currently * This may only be called from process context, and also currently
* assumes internal allocation of fabric payload buffer by target-core. * assumes internal allocation of fabric payload buffer by target-core.
**/ **/
int target_submit_cmd(struct se_cmd *se_cmd, struct se_session *se_sess, void target_submit_cmd(struct se_cmd *se_cmd, struct se_session *se_sess,
unsigned char *cdb, unsigned char *sense, u32 unpacked_lun, unsigned char *cdb, unsigned char *sense, u32 unpacked_lun,
u32 data_length, int task_attr, int data_dir, int flags) u32 data_length, int task_attr, int data_dir, int flags)
{ {
...@@ -1706,12 +1706,11 @@ int target_submit_cmd(struct se_cmd *se_cmd, struct se_session *se_sess, ...@@ -1706,12 +1706,11 @@ int target_submit_cmd(struct se_cmd *se_cmd, struct se_session *se_sess,
* when fabric has filled the incoming buffer. * when fabric has filled the incoming buffer.
*/ */
transport_handle_cdb_direct(se_cmd); transport_handle_cdb_direct(se_cmd);
return 0; return;
out_check_cond: out_check_cond:
transport_send_check_condition_and_sense(se_cmd, transport_send_check_condition_and_sense(se_cmd,
se_cmd->scsi_sense_reason, 0); se_cmd->scsi_sense_reason, 0);
return 0;
} }
EXPORT_SYMBOL(target_submit_cmd); EXPORT_SYMBOL(target_submit_cmd);
......
...@@ -540,7 +540,6 @@ static void ft_send_work(struct work_struct *work) ...@@ -540,7 +540,6 @@ static void ft_send_work(struct work_struct *work)
int data_dir = 0; int data_dir = 0;
u32 data_len; u32 data_len;
int task_attr; int task_attr;
int ret;
fcp = fc_frame_payload_get(cmd->req_frame, sizeof(*fcp)); fcp = fc_frame_payload_get(cmd->req_frame, sizeof(*fcp));
if (!fcp) if (!fcp)
...@@ -603,14 +602,10 @@ static void ft_send_work(struct work_struct *work) ...@@ -603,14 +602,10 @@ static void ft_send_work(struct work_struct *work)
* Use a single se_cmd->cmd_kref as we expect to release se_cmd * Use a single se_cmd->cmd_kref as we expect to release se_cmd
* directly from ft_check_stop_free callback in response path. * directly from ft_check_stop_free callback in response path.
*/ */
ret = target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, cmd->cdb, target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, cmd->cdb,
&cmd->ft_sense_buffer[0], cmd->lun, data_len, &cmd->ft_sense_buffer[0], cmd->lun, data_len,
task_attr, data_dir, 0); task_attr, data_dir, 0);
pr_debug("r_ctl %x alloc target_submit_cmd %d\n", fh->fh_r_ctl, ret); pr_debug("r_ctl %x alloc target_submit_cmd\n", fh->fh_r_ctl);
if (ret < 0) {
ft_dump_cmd(cmd, __func__);
return;
}
return; return;
err: err:
......
...@@ -114,7 +114,7 @@ void transport_init_se_cmd(struct se_cmd *, struct target_core_fabric_ops *, ...@@ -114,7 +114,7 @@ void transport_init_se_cmd(struct se_cmd *, struct target_core_fabric_ops *,
struct se_session *, u32, int, int, unsigned char *); struct se_session *, u32, int, int, unsigned char *);
int transport_lookup_cmd_lun(struct se_cmd *, u32); int transport_lookup_cmd_lun(struct se_cmd *, u32);
int transport_generic_allocate_tasks(struct se_cmd *, unsigned char *); int transport_generic_allocate_tasks(struct se_cmd *, unsigned char *);
int target_submit_cmd(struct se_cmd *, struct se_session *, unsigned char *, void target_submit_cmd(struct se_cmd *, struct se_session *, unsigned char *,
unsigned char *, u32, u32, int, int, int); unsigned char *, u32, u32, int, int, int);
int transport_handle_cdb_direct(struct se_cmd *); int transport_handle_cdb_direct(struct se_cmd *);
int transport_generic_handle_cdb_map(struct se_cmd *); int transport_generic_handle_cdb_map(struct se_cmd *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment