aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target/tcm_fc
diff options
context:
space:
mode:
authorRoland Dreier <roland@purestorage.com>2012-07-16 14:04:39 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2012-07-17 20:05:05 -0400
commitd6dfc868bcf329392abd1ecfa7357eb51ebf8c30 (patch)
tree7eb33785e4d6a59111560b56e68f4facaddee310 /drivers/target/tcm_fc
parent7409a6657aebf8be74c21d0eded80709b27275cb (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/target/tcm_fc')
-rw-r--r--drivers/target/tcm_fc/tfc_cmd.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/target/tcm_fc/tfc_cmd.c b/drivers/target/tcm_fc/tfc_cmd.c
index 4ad58ac823e5..b9cb5006177e 100644
--- a/drivers/target/tcm_fc/tfc_cmd.c
+++ b/drivers/target/tcm_fc/tfc_cmd.c
@@ -543,9 +543,11 @@ static void ft_send_work(struct work_struct *work)
543 * Use a single se_cmd->cmd_kref as we expect to release se_cmd 543 * Use a single se_cmd->cmd_kref as we expect to release se_cmd
544 * directly from ft_check_stop_free callback in response path. 544 * directly from ft_check_stop_free callback in response path.
545 */ 545 */
546 target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, fcp->fc_cdb, 546 if (target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, fcp->fc_cdb,
547 &cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun), 547 &cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun),
548 ntohl(fcp->fc_dl), task_attr, data_dir, 0); 548 ntohl(fcp->fc_dl), task_attr, data_dir, 0))
549 goto err;
550
549 pr_debug("r_ctl %x alloc target_submit_cmd\n", fh->fh_r_ctl); 551 pr_debug("r_ctl %x alloc target_submit_cmd\n", fh->fh_r_ctl);
550 return; 552 return;
551 553