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 /include/target | |
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 'include/target')
-rw-r--r-- | include/target/target_core_fabric.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h index 815e064028c9..69fb3cfd02d7 100644 --- a/include/target/target_core_fabric.h +++ b/include/target/target_core_fabric.h | |||
@@ -102,7 +102,7 @@ void transport_init_se_cmd(struct se_cmd *, struct target_core_fabric_ops *, | |||
102 | struct se_session *, u32, int, int, unsigned char *); | 102 | struct se_session *, u32, int, int, unsigned char *); |
103 | int transport_lookup_cmd_lun(struct se_cmd *, u32); | 103 | int transport_lookup_cmd_lun(struct se_cmd *, u32); |
104 | int target_setup_cmd_from_cdb(struct se_cmd *, unsigned char *); | 104 | int target_setup_cmd_from_cdb(struct se_cmd *, unsigned char *); |
105 | void target_submit_cmd(struct se_cmd *, struct se_session *, unsigned char *, | 105 | int target_submit_cmd(struct se_cmd *, struct se_session *, unsigned char *, |
106 | unsigned char *, u32, u32, int, int, int); | 106 | unsigned char *, u32, u32, int, int, int); |
107 | int target_submit_tmr(struct se_cmd *se_cmd, struct se_session *se_sess, | 107 | int target_submit_tmr(struct se_cmd *se_cmd, struct se_session *se_sess, |
108 | unsigned char *sense, u32 unpacked_lun, | 108 | unsigned char *sense, u32 unpacked_lun, |