diff options
author | Roland Dreier <roland@purestorage.com> | 2012-07-16 14:04:39 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2012-07-17 20:05:05 -0400 |
commit | d6dfc868bcf329392abd1ecfa7357eb51ebf8c30 (patch) | |
tree | 7eb33785e4d6a59111560b56e68f4facaddee310 /drivers/scsi/qla2xxx/tcm_qla2xxx.c | |
parent | 7409a6657aebf8be74c21d0eded80709b27275cb (diff) |
target: Allow for target_submit_cmd() returning errors
We want it to be possible for target_submit_cmd() to return errors up
to its fabric module callers. For now just update the prototype to
return an int, and update all callers to handle non-zero return values
as an error.
This is immediately useful for tcm_qla2xxx to fix a long-standing active
I/O session shutdown race, but tcm_fc, usb-gadget, and sbp-target the
fabric maintainers need to check + ACK that handling a target_submit_cmd()
failure due to session shutdown does not introduce regressions
(nab: Respin against for-next after initial NACK + update docbook comment +
fix double se_cmd init in exception path for usb-gadget)
Cc: Chad Dupuis <chad.dupuis@qlogic.com>
Cc: Arun Easi <arun.easi@qlogic.com>
Cc: Chris Boot <bootc@bootc.net>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Mark Rustad <mark.d.rustad@intel.com>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Andy Grover <agrover@redhat.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/scsi/qla2xxx/tcm_qla2xxx.c')
-rw-r--r-- | drivers/scsi/qla2xxx/tcm_qla2xxx.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index 65a7ed9ac81d..4752f65a9272 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c | |||
@@ -597,10 +597,9 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd, | |||
597 | return -EINVAL; | 597 | return -EINVAL; |
598 | } | 598 | } |
599 | 599 | ||
600 | target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0], | 600 | return target_submit_cmd(se_cmd, se_sess, cdb, &cmd->sense_buffer[0], |
601 | cmd->unpacked_lun, data_length, fcp_task_attr, | 601 | cmd->unpacked_lun, data_length, fcp_task_attr, |
602 | data_dir, flags); | 602 | data_dir, flags); |
603 | return 0; | ||
604 | } | 603 | } |
605 | 604 | ||
606 | static void tcm_qla2xxx_handle_data_work(struct work_struct *work) | 605 | static void tcm_qla2xxx_handle_data_work(struct work_struct *work) |