Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / target / target_core_xcopy.h
diff --git a/kernel/drivers/target/target_core_xcopy.h b/kernel/drivers/target/target_core_xcopy.h
new file mode 100644 (file)
index 0000000..700a981
--- /dev/null
@@ -0,0 +1,62 @@
+#define XCOPY_TARGET_DESC_LEN          32
+#define XCOPY_SEGMENT_DESC_LEN         28
+#define XCOPY_NAA_IEEE_REGEX_LEN       16
+#define XCOPY_MAX_SECTORS              1024
+
+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 *);