2016-11-15 02:47:14 +03:00
# include <target/target_core_base.h>
2013-08-21 02:38:55 +04:00
# define XCOPY_TARGET_DESC_LEN 32
# define XCOPY_SEGMENT_DESC_LEN 28
# define XCOPY_NAA_IEEE_REGEX_LEN 16
# define XCOPY_MAX_SECTORS 1024
2017-01-02 20:04:06 +03:00
/*
* SPC4r37 6.4 .6 .1
* Table 150 — CSCD descriptor ID values
*/
# define XCOPY_CSCD_DESC_ID_LIST_OFF_MAX 0x07FF
2013-08-21 02:38:55 +04:00
enum xcopy_origin_list {
XCOL_SOURCE_RECV_OP = 0x01 ,
XCOL_DEST_RECV_OP = 0x02 ,
} ;
struct xcopy_pt_cmd ;
struct xcopy_op {
int op_origin ;
struct se_cmd * xop_se_cmd ;
struct se_device * src_dev ;
unsigned char src_tid_wwn [ XCOPY_NAA_IEEE_REGEX_LEN ] ;
struct se_device * dst_dev ;
unsigned char dst_tid_wwn [ XCOPY_NAA_IEEE_REGEX_LEN ] ;
unsigned char local_dev_wwn [ XCOPY_NAA_IEEE_REGEX_LEN ] ;
sector_t src_lba ;
sector_t dst_lba ;
unsigned short stdi ;
unsigned short dtdi ;
unsigned short nolb ;
unsigned int dbl ;
struct xcopy_pt_cmd * src_pt_cmd ;
struct xcopy_pt_cmd * dst_pt_cmd ;
u32 xop_data_nents ;
struct scatterlist * xop_data_sg ;
struct work_struct xop_work ;
} ;
/*
* Receive Copy Results Sevice Actions
*/
# define RCR_SA_COPY_STATUS 0x00
# define RCR_SA_RECEIVE_DATA 0x01
# define RCR_SA_OPERATING_PARAMETERS 0x03
# define RCR_SA_FAILED_SEGMENT_DETAILS 0x04
/*
* Receive Copy Results defs for Operating Parameters
*/
# define RCR_OP_MAX_TARGET_DESC_COUNT 0x2
# define RCR_OP_MAX_SG_DESC_COUNT 0x1
# define RCR_OP_MAX_DESC_LIST_LEN 1024
# define RCR_OP_MAX_SEGMENT_LEN 268435456 /* 256 MB */
# define RCR_OP_TOTAL_CONCURR_COPIES 0x1 /* Must be <= 16384 */
# define RCR_OP_MAX_CONCURR_COPIES 0x1 /* Must be <= 255 */
# define RCR_OP_DATA_SEG_GRAN_LOG2 9 /* 512 bytes in log 2 */
# define RCR_OP_INLINE_DATA_GRAN_LOG2 9 /* 512 bytes in log 2 */
# define RCR_OP_HELD_DATA_GRAN_LOG2 9 /* 512 bytes in log 2 */
extern int target_xcopy_setup_pt ( void ) ;
extern void target_xcopy_release_pt ( void ) ;
extern sense_reason_t target_do_xcopy ( struct se_cmd * ) ;
extern sense_reason_t target_do_receive_copy_results ( struct se_cmd * ) ;