linux/drivers/target
Nicholas Bellinger 449a137846 target: Make EXTENDED_COPY 0xe4 failure return COPY TARGET DEVICE NOT REACHABLE
This patch addresses a bug where EXTENDED_COPY across multiple LUNs
results in a CHECK_CONDITION when the source + destination are not
located on the same physical node.

ESX Host environments expect sense COPY_ABORTED w/ COPY TARGET DEVICE
NOT REACHABLE to be returned when this occurs, in order to signal
fallback to local copy method.

As described in section 6.3.3 of spc4r22:

  "If it is not possible to complete processing of a segment because the
   copy manager is unable to establish communications with a copy target
   device, because the copy target device does not respond to INQUIRY,
   or because the data returned in response to INQUIRY indicates
   an unsupported logical unit, then the EXTENDED COPY command shall be
   terminated with CHECK CONDITION status, with the sense key set to
   COPY ABORTED, and the additional sense code set to COPY TARGET DEVICE
   NOT REACHABLE."

Tested on v4.1.y with ESX v5.5u2+ with BlockCopy across multiple nodes.

Reported-by: Nixon Vincent <nixon.vincent@calsoftinc.com>
Tested-by: Nixon Vincent <nixon.vincent@calsoftinc.com>
Cc: Nixon Vincent <nixon.vincent@calsoftinc.com>
Tested-by: Dinesh Israni <ddi@datera.io>
Signed-off-by: Dinesh Israni <ddi@datera.io>
Cc: Dinesh Israni <ddi@datera.io>
Cc: stable@vger.kernel.org # 3.14+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2016-10-19 21:22:32 -07:00
..
iscsi iscsi-target: fix iscsi cmd leak 2016-10-19 21:22:31 -07:00
loopback target: make close_session optional 2016-05-10 01:19:26 -07:00
sbp target: make close_session optional 2016-05-10 01:19:26 -07:00
tcm_fc tcm_fc: set and unset FCP_SPPF_TARG_FCN 2016-07-20 13:27:05 -07:00
Kconfig
Makefile
target_core_alua.c target: use new "dbroot" target attribute 2016-05-09 23:06:20 -07:00
target_core_alua.h
target_core_configfs.c target: make close_session optional 2016-05-10 01:19:26 -07:00
target_core_device.c target: Fix max_unmap_lba_count calc overflow 2016-07-20 00:58:36 -07:00
target_core_fabric_configfs.c target: add a new add_wwn_groups fabrics method 2016-03-30 20:06:44 -07:00
target_core_fabric_lib.c
target_core_file.c target: fix spelling mistake: "limitiation" -> "limitation" 2016-07-23 23:34:55 -07:00
target_core_file.h
target_core_hba.c target: Fix target_sense_desc_format NULL pointer dereference 2015-09-24 23:17:23 -07:00
target_core_iblock.c target: iblock_execute_sync_cache() should use bio_set_op_attrs() 2016-08-07 14:41:02 -06:00
target_core_iblock.h
target_core_internal.h target: Fix ordered task target_setup_cmd_from_cdb exception hang 2016-07-20 00:58:38 -07:00
target_core_pr.c target: use new "dbroot" target attribute 2016-05-09 23:06:20 -07:00
target_core_pr.h
target_core_pscsi.c target: stop using blk_make_request 2016-07-20 17:38:33 -06:00
target_core_pscsi.h
target_core_rd.c target: need_to_release is always false, remove redundant check and kfree 2016-05-10 01:19:55 -07:00
target_core_rd.h
target_core_sbc.c target: Fix ordered task target_setup_cmd_from_cdb exception hang 2016-07-20 00:58:38 -07:00
target_core_spc.c target: Remove enum transport_lunflags_table 2016-03-10 21:48:55 -08:00
target_core_stat.c configfs: switch ->default groups to a linked list 2016-03-06 16:11:24 +01:00
target_core_tmr.c target: Drop incorrect ABORT_TASK put for completed commands 2016-03-05 20:24:47 -08:00
target_core_tpg.c target: remove sess_kref and ->shutdown_session 2016-05-10 01:19:49 -07:00
target_core_transport.c target: Make EXTENDED_COPY 0xe4 failure return COPY TARGET DEVICE NOT REACHABLE 2016-10-19 21:22:32 -07:00
target_core_ua.c
target_core_ua.h
target_core_user.c target/user: Fix comments to not refer to data ring 2016-10-19 21:22:23 -07:00
target_core_xcopy.c target: Make EXTENDED_COPY 0xe4 failure return COPY TARGET DEVICE NOT REACHABLE 2016-10-19 21:22:32 -07:00
target_core_xcopy.h