cbf031f425
This patch adds support for EXTENDED_COPY emulation from SPC-3, that enables full copy offload target support within both a single virtual backend device, and across multiple virtual backend devices. It also functions independent of target fabric, and supports copy offload across multiple target fabric ports. This implemenation supports both EXTENDED_COPY PUSH and PULL models of operation, so the actual CDB may be received on either source or desination logical unit. For Target Descriptors, it currently supports the NAA IEEE Registered Extended designator (type 0xe4), which allows the reference of target ports to occur independent of fabric type using EVPD 0x83 WWNs. For Segment Descriptors, it currently supports copy from block to block (0x02) mode. It also honors any present SCSI reservations of the destination target port. Note that only Supports No List Identifier (SNLID=1) mode is supported. Also included is basic RECEIVE_COPY_RESULTS with service action type OPERATING PARAMETERS (0x03) required for SNLID=1 operation. v3 changes: - Fix incorrect return type in target_do_receive_copy_results() (Fengguang) v2 changes: - Use target_alloc_sgl() instead of transport_generic_get_mem() - Convert debug output to use pr_debug() - Convert target_xcopy_parse_target_descriptors() NAA IEEN WWN dump to use 0x%16phN format specification - Drop unnecessary xcopy_pt_cmd->xpt_passthrough_wsem, and associated usage in xcopy_pt_write_pending() and target_xcopy_issue_pt_cmd() - Add check for unsupported EXTENDED_COPY(LID4) service action bits in target_do_xcopy() Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.de> Cc: Martin Petersen <martin.petersen@oracle.com> Cc: Chris Mason <chris.mason@fusionio.com> Cc: Roland Dreier <roland@purestorage.com> Cc: Zach Brown <zab@redhat.com> Cc: James Bottomley <JBottomley@Parallels.com> Cc: Nicholas Bellinger <nab@linux-iscsi.org> Signed-off-by: Nicholas Bellinger <nab@daterainc.com>
31 lines
857 B
Makefile
31 lines
857 B
Makefile
|
|
target_core_mod-y := target_core_configfs.o \
|
|
target_core_device.o \
|
|
target_core_fabric_configfs.o \
|
|
target_core_fabric_lib.o \
|
|
target_core_hba.o \
|
|
target_core_pr.o \
|
|
target_core_alua.o \
|
|
target_core_tmr.o \
|
|
target_core_tpg.o \
|
|
target_core_transport.o \
|
|
target_core_sbc.o \
|
|
target_core_spc.o \
|
|
target_core_ua.o \
|
|
target_core_rd.o \
|
|
target_core_stat.o \
|
|
target_core_xcopy.o
|
|
|
|
obj-$(CONFIG_TARGET_CORE) += target_core_mod.o
|
|
|
|
# Subsystem modules
|
|
obj-$(CONFIG_TCM_IBLOCK) += target_core_iblock.o
|
|
obj-$(CONFIG_TCM_FILEIO) += target_core_file.o
|
|
obj-$(CONFIG_TCM_PSCSI) += target_core_pscsi.o
|
|
|
|
# Fabric modules
|
|
obj-$(CONFIG_LOOPBACK_TARGET) += loopback/
|
|
obj-$(CONFIG_TCM_FC) += tcm_fc/
|
|
obj-$(CONFIG_ISCSI_TARGET) += iscsi/
|
|
obj-$(CONFIG_SBP_TARGET) += sbp/
|