diff options
| author | Christoph Hellwig <hch@infradead.org> | 2011-11-16 09:46:48 -0500 | 
|---|---|---|
| committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-12-14 11:26:05 +0000 | 
| commit | c4795fb20edf2fe2c862c8fe9f8b681edeb79ac1 (patch) | |
| tree | 506a8cb0a12ea2b56c5ebed5e6bc2a0d842c069d | |
| parent | e26d99aed42ec6cdc9540d19c77ac5d4dd2c5b00 (diff) | |
| download | olio-linux-3.10-c4795fb20edf2fe2c862c8fe9f8b681edeb79ac1.tar.xz olio-linux-3.10-c4795fb20edf2fe2c862c8fe9f8b681edeb79ac1.zip  | |
target: header reshuffle, part2
This reorganized the headers under include/target into:
 - target_core_base.h stays as is with all target-wide data stuctures and defines
 - target_core_backend.h contains the whole interface to I/O backends
 - target_core_fabric.h contains the whole interface to fabric modules
Except for those only the various configfs macro headers stay around.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
44 files changed, 288 insertions, 462 deletions
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 7ef9b843d52..e2abb29fb99 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py @@ -230,14 +230,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):  	buf += "#include <linux/ctype.h>\n"  	buf += "#include <asm/unaligned.h>\n\n"  	buf += "#include <target/target_core_base.h>\n" -	buf += "#include <target/target_core_transport.h>\n" -	buf += "#include <target/target_core_fabric_ops.h>\n" +	buf += "#include <target/target_core_fabric.h>\n"  	buf += "#include <target/target_core_fabric_configfs.h>\n" -	buf += "#include <target/target_core_fabric_lib.h>\n" -	buf += "#include <target/target_core_device.h>\n" -	buf += "#include <target/target_core_tpg.h>\n"  	buf += "#include <target/target_core_configfs.h>\n" -	buf += "#include <target/target_core_base.h>\n"  	buf += "#include <target/configfs_macros.h>\n\n"  	buf += "#include \"" + fabric_mod_name + "_base.h\"\n"  	buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n" @@ -514,7 +509,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):  def tcm_mod_scan_fabric_ops(tcm_dir): -	fabric_ops_api = tcm_dir + "include/target/target_core_fabric_ops.h" +	fabric_ops_api = tcm_dir + "include/target/target_core_fabric.h"  	print "Using tcm_mod_scan_fabric_ops: " + fabric_ops_api  	process_fo = 0; @@ -579,11 +574,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):  	buf += "#include <scsi/scsi_cmnd.h>\n"  	buf += "#include <scsi/libfc.h>\n\n"  	buf += "#include <target/target_core_base.h>\n" -	buf += "#include <target/target_core_transport.h>\n" -	buf += "#include <target/target_core_fabric_ops.h>\n" -	buf += "#include <target/target_core_fabric_lib.h>\n" -	buf += "#include <target/target_core_device.h>\n" -	buf += "#include <target/target_core_tpg.h>\n" +	buf += "#include <target/target_core_fabric.h>\n"  	buf += "#include <target/target_core_configfs.h>\n\n"  	buf += "#include \"" + fabric_mod_name + "_base.h\"\n"  	buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n" diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 8599545cdf9..f74a62d46ee 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c @@ -27,8 +27,7 @@  #include <scsi/scsi_device.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_tmr.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_parameters.h" diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c index db327845e46..c04d389a2ff 100644 --- a/drivers/target/iscsi/iscsi_target_configfs.c +++ b/drivers/target/iscsi/iscsi_target_configfs.c @@ -22,12 +22,8 @@  #include <linux/configfs.h>  #include <linux/export.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_fabric_configfs.h> -#include <target/target_core_fabric_lib.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/drivers/target/iscsi/iscsi_target_device.c b/drivers/target/iscsi/iscsi_target_device.c index a19fa5eea88..f63ea35bc4a 100644 --- a/drivers/target/iscsi/iscsi_target_device.c +++ b/drivers/target/iscsi/iscsi_target_device.c @@ -21,8 +21,7 @@  #include <scsi/scsi_device.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_device.h" diff --git a/drivers/target/iscsi/iscsi_target_erl0.c b/drivers/target/iscsi/iscsi_target_erl0.c index b7ffc3cd40c..478451167b6 100644 --- a/drivers/target/iscsi/iscsi_target_erl0.c +++ b/drivers/target/iscsi/iscsi_target_erl0.c @@ -21,7 +21,7 @@  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_seq_pdu_list.h" diff --git a/drivers/target/iscsi/iscsi_target_erl1.c b/drivers/target/iscsi/iscsi_target_erl1.c index 101b1beb3bc..255c0d67e89 100644 --- a/drivers/target/iscsi/iscsi_target_erl1.c +++ b/drivers/target/iscsi/iscsi_target_erl1.c @@ -21,7 +21,7 @@  #include <linux/list.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_seq_pdu_list.h" diff --git a/drivers/target/iscsi/iscsi_target_erl2.c b/drivers/target/iscsi/iscsi_target_erl2.c index 0b8404c3012..1af1f21af21 100644 --- a/drivers/target/iscsi/iscsi_target_erl2.c +++ b/drivers/target/iscsi/iscsi_target_erl2.c @@ -21,7 +21,7 @@  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_datain_values.h" diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index d734bdec24f..d74e278ec8f 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c @@ -23,7 +23,7 @@  #include <linux/crypto.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_tq.h" diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index 98936cb7c29..53eea5c827f 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c @@ -21,7 +21,7 @@  #include <linux/ctype.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_tpg.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_parameters.h" diff --git a/drivers/target/iscsi/iscsi_target_nodeattrib.c b/drivers/target/iscsi/iscsi_target_nodeattrib.c index aeafbe0cd7d..ac047d8a7a1 100644 --- a/drivers/target/iscsi/iscsi_target_nodeattrib.c +++ b/drivers/target/iscsi/iscsi_target_nodeattrib.c @@ -19,7 +19,6 @@   ******************************************************************************/  #include <target/target_core_base.h> -#include <target/target_core_transport.h>  #include "iscsi_target_core.h"  #include "iscsi_target_device.h" diff --git a/drivers/target/iscsi/iscsi_target_stat.c b/drivers/target/iscsi/iscsi_target_stat.c index f1db83077e0..5a1aac0ec7d 100644 --- a/drivers/target/iscsi/iscsi_target_stat.c +++ b/drivers/target/iscsi/iscsi_target_stat.c @@ -23,7 +23,6 @@  #include <linux/export.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h>  #include <target/configfs_macros.h>  #include "iscsi_target_core.h" diff --git a/drivers/target/iscsi/iscsi_target_tmr.c b/drivers/target/iscsi/iscsi_target_tmr.c index 490207eacde..255ed35da81 100644 --- a/drivers/target/iscsi/iscsi_target_tmr.c +++ b/drivers/target/iscsi/iscsi_target_tmr.c @@ -21,7 +21,7 @@  #include <asm/unaligned.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> +#include <target/target_core_fabric.h>  #include "iscsi_target_core.h"  #include "iscsi_target_seq_pdu_list.h" diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c index d4cf2cd25c4..cfbcf6e4877 100644 --- a/drivers/target/iscsi/iscsi_target_tpg.c +++ b/drivers/target/iscsi/iscsi_target_tpg.c @@ -19,10 +19,8 @@   ******************************************************************************/  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h> -#include <target/target_core_tpg.h>  #include "iscsi_target_core.h"  #include "iscsi_target_erl0.h" diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index 02348f727bd..c1daea19085 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c @@ -22,9 +22,7 @@  #include <scsi/scsi_tcq.h>  #include <scsi/iscsi_proto.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_tmr.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "iscsi_target_core.h" diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c index 81d5832fbbd..d427a290e18 100644 --- a/drivers/target/loopback/tcm_loop.c +++ b/drivers/target/loopback/tcm_loop.c @@ -33,14 +33,9 @@  #include <scsi/scsi_cmnd.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_fabric_configfs.h> -#include <target/target_core_fabric_lib.h>  #include <target/target_core_configfs.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> -#include <target/target_core_tmr.h>  #include "tcm_loop.h" diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c index 097eb5a4964..1b1edd14f4b 100644 --- a/drivers/target/target_core_alua.c +++ b/drivers/target/target_core_alua.c @@ -32,9 +32,8 @@  #include <scsi/scsi_cmnd.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_cdb.c b/drivers/target/target_core_cdb.c index 8f2934fcc68..59219509d88 100644 --- a/drivers/target/target_core_cdb.c +++ b/drivers/target/target_core_cdb.c @@ -29,8 +29,8 @@  #include <scsi/scsi.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include "target_core_internal.h"  #include "target_core_ua.h" diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c index ac55af56ba1..3c358907a4a 100644 --- a/drivers/target/target_core_configfs.c +++ b/drivers/target/target_core_configfs.c @@ -39,9 +39,8 @@  #include <linux/spinlock.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include <target/target_core_fabric_configfs.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/drivers/target/target_core_device.c b/drivers/target/target_core_device.c index 28ffe0b52bd..1f74de25a92 100644 --- a/drivers/target/target_core_device.c +++ b/drivers/target/target_core_device.c @@ -42,10 +42,8 @@  #include <scsi/scsi_device.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include "target_core_internal.h"  #include "target_core_alua.h" diff --git a/drivers/target/target_core_fabric_configfs.c b/drivers/target/target_core_fabric_configfs.c index fa1e4eb01bc..4f77cce2264 100644 --- a/drivers/target/target_core_fabric_configfs.c +++ b/drivers/target/target_core_fabric_configfs.c @@ -36,10 +36,7 @@  #include <linux/configfs.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_fabric_configfs.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/drivers/target/target_core_fabric_lib.c b/drivers/target/target_core_fabric_lib.c index dd9ae929dda..32d7feb405e 100644 --- a/drivers/target/target_core_fabric_lib.c +++ b/drivers/target/target_core_fabric_lib.c @@ -34,10 +34,7 @@  #include <scsi/scsi_cmnd.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_lib.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c index b4864fba4ef..ed7e05353d6 100644 --- a/drivers/target/target_core_file.c +++ b/drivers/target/target_core_file.c @@ -37,8 +37,7 @@  #include <scsi/scsi_host.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> +#include <target/target_core_backend.h>  #include "target_core_file.h" diff --git a/drivers/target/target_core_hba.c b/drivers/target/target_core_hba.c index 26c1238976c..3dd1bd4b6f7 100644 --- a/drivers/target/target_core_hba.c +++ b/drivers/target/target_core_hba.c @@ -37,9 +37,8 @@  #include <net/tcp.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> -#include <target/target_core_transport.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index 4aa99220443..feebbfe6cbd 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c @@ -42,8 +42,7 @@  #include <scsi/scsi_host.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> +#include <target/target_core_backend.h>  #include "target_core_iblock.h" diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index 36fa9a5f1ba..d2b73b3f4e6 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -33,11 +33,8 @@  #include <asm/unaligned.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tmr.h> -#include <target/target_core_tpg.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c index 8b15e56b038..5d8851de3ae 100644 --- a/drivers/target/target_core_pscsi.c +++ b/drivers/target/target_core_pscsi.c @@ -44,8 +44,7 @@  #include <scsi/scsi_tcq.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> +#include <target/target_core_backend.h>  #include "target_core_pscsi.h" diff --git a/drivers/target/target_core_rd.c b/drivers/target/target_core_rd.c index 02e51faa2f4..94b4087dadd 100644 --- a/drivers/target/target_core_rd.c +++ b/drivers/target/target_core_rd.c @@ -37,9 +37,7 @@  #include <scsi/scsi_host.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h>  #include "target_core_rd.h" diff --git a/drivers/target/target_core_stat.c b/drivers/target/target_core_stat.c index d2ba9266ff4..6d8a90464f2 100644 --- a/drivers/target/target_core_stat.c +++ b/drivers/target/target_core_stat.c @@ -43,8 +43,8 @@  #include <scsi/scsi_host.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c index 47bc26ba786..fc9d7489031 100644 --- a/drivers/target/target_core_tmr.c +++ b/drivers/target/target_core_tmr.c @@ -32,10 +32,8 @@  #include <scsi/scsi_cmnd.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tmr.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c index 0a936fae3d2..b7668029bb3 100644 --- a/drivers/target/target_core_tpg.c +++ b/drivers/target/target_core_tpg.c @@ -39,10 +39,8 @@  #include <scsi/scsi_cmnd.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index e0ea63dedde..72c13b7a349 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -45,11 +45,8 @@  #include <scsi/scsi_tcq.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_tmr.h> -#include <target/target_core_tpg.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_backend.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "target_core_internal.h" diff --git a/drivers/target/target_core_ua.c b/drivers/target/target_core_ua.c index e2ae53c7e08..3e12f6bcfa1 100644 --- a/drivers/target/target_core_ua.c +++ b/drivers/target/target_core_ua.c @@ -30,9 +30,7 @@  #include <scsi/scsi_cmnd.h>  #include <target/target_core_base.h> -#include <target/target_core_device.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include "target_core_internal.h" diff --git a/drivers/target/tcm_fc/tfc_cmd.c b/drivers/target/tcm_fc/tfc_cmd.c index 71fc9cea5dc..dbbbc8376d0 100644 --- a/drivers/target/tcm_fc/tfc_cmd.c +++ b/drivers/target/tcm_fc/tfc_cmd.c @@ -39,12 +39,8 @@  #include <scsi/fc_encode.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h> -#include <target/target_core_tmr.h>  #include <target/configfs_macros.h>  #include "tcm_fc.h" diff --git a/drivers/target/tcm_fc/tfc_conf.c b/drivers/target/tcm_fc/tfc_conf.c index 9402b7387ca..73852fbc857 100644 --- a/drivers/target/tcm_fc/tfc_conf.c +++ b/drivers/target/tcm_fc/tfc_conf.c @@ -41,12 +41,8 @@  #include <scsi/libfc.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> +#include <target/target_core_fabric.h>  #include <target/target_core_fabric_configfs.h> -#include <target/target_core_fabric_lib.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/drivers/target/tcm_fc/tfc_io.c b/drivers/target/tcm_fc/tfc_io.c index 1369b1cb103..d8cabc21036 100644 --- a/drivers/target/tcm_fc/tfc_io.c +++ b/drivers/target/tcm_fc/tfc_io.c @@ -48,10 +48,7 @@  #include <scsi/fc_encode.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/drivers/target/tcm_fc/tfc_sess.c b/drivers/target/tcm_fc/tfc_sess.c index 326921385af..4c0507cf808 100644 --- a/drivers/target/tcm_fc/tfc_sess.c +++ b/drivers/target/tcm_fc/tfc_sess.c @@ -40,10 +40,7 @@  #include <scsi/libfc.h>  #include <target/target_core_base.h> -#include <target/target_core_transport.h> -#include <target/target_core_fabric_ops.h> -#include <target/target_core_device.h> -#include <target/target_core_tpg.h> +#include <target/target_core_fabric.h>  #include <target/target_core_configfs.h>  #include <target/configfs_macros.h> diff --git a/include/target/target_core_backend.h b/include/target/target_core_backend.h new file mode 100644 index 00000000000..4866499bdee --- /dev/null +++ b/include/target/target_core_backend.h @@ -0,0 +1,65 @@ +#ifndef TARGET_CORE_BACKEND_H +#define TARGET_CORE_BACKEND_H + +#define TRANSPORT_PLUGIN_PHBA_PDEV		1 +#define TRANSPORT_PLUGIN_VHBA_PDEV		2 +#define TRANSPORT_PLUGIN_VHBA_VDEV		3 + +struct se_subsystem_api { +	struct list_head sub_api_list; + +	char name[16]; +	struct module *owner; + +	u8 transport_type; + +	unsigned int fua_write_emulated : 1; +	unsigned int write_cache_emulated : 1; + +	int (*attach_hba)(struct se_hba *, u32); +	void (*detach_hba)(struct se_hba *); +	int (*pmode_enable_hba)(struct se_hba *, unsigned long); +	void *(*allocate_virtdevice)(struct se_hba *, const char *); +	struct se_device *(*create_virtdevice)(struct se_hba *, +				struct se_subsystem_dev *, void *); +	void (*free_device)(void *); +	int (*transport_complete)(struct se_task *task); +	struct se_task *(*alloc_task)(unsigned char *cdb); +	int (*do_task)(struct se_task *); +	int (*do_discard)(struct se_device *, sector_t, u32); +	void (*do_sync_cache)(struct se_task *); +	void (*free_task)(struct se_task *); +	ssize_t (*check_configfs_dev_params)(struct se_hba *, +			struct se_subsystem_dev *); +	ssize_t (*set_configfs_dev_params)(struct se_hba *, +			struct se_subsystem_dev *, const char *, ssize_t); +	ssize_t (*show_configfs_dev_params)(struct se_hba *, +			struct se_subsystem_dev *, char *); +	u32 (*get_device_rev)(struct se_device *); +	u32 (*get_device_type)(struct se_device *); +	sector_t (*get_blocks)(struct se_device *); +	unsigned char *(*get_sense_buffer)(struct se_task *); +}; + +int	transport_subsystem_register(struct se_subsystem_api *); +void	transport_subsystem_release(struct se_subsystem_api *); + +struct se_device *transport_add_device_to_core_hba(struct se_hba *, +		struct se_subsystem_api *, struct se_subsystem_dev *, u32, +		void *, struct se_dev_limits *, const char *, const char *); + +void	transport_complete_sync_cache(struct se_cmd *, int); +void	transport_complete_task(struct se_task *, int); + +void	target_get_task_cdb(struct se_task *, unsigned char *); + +void	transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *); +int	transport_set_vpd_assoc(struct t10_vpd *, unsigned char *); +int	transport_set_vpd_ident_type(struct t10_vpd *, unsigned char *); +int	transport_set_vpd_ident(struct t10_vpd *, unsigned char *); + +/* core helpers also used by command snooping in pscsi */ +void	*transport_kmap_first_data_page(struct se_cmd *); +void	transport_kunmap_first_data_page(struct se_cmd *); + +#endif /* TARGET_CORE_BACKEND_H */ diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 6873c7dd914..1d90fb33e60 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h @@ -10,6 +10,7 @@  #include <net/tcp.h>  #define TARGET_CORE_MOD_VERSION		"v4.1.0-rc1-ml" +#define TARGET_CORE_VERSION		TARGET_CORE_MOD_VERSION  /* Maximum Number of LUNs per Target Portal Group */  /* Don't raise above 511 or REPORT_LUNS needs to handle >1 page */ @@ -53,6 +54,72 @@  /* Used by transport_get_inquiry_vpd_device_ident() */  #define INQUIRY_VPD_DEVICE_IDENTIFIER_LEN	254 +/* Attempts before moving from SHORT to LONG */ +#define PYX_TRANSPORT_WINDOW_CLOSED_THRESHOLD	3 +#define PYX_TRANSPORT_WINDOW_CLOSED_WAIT_SHORT	3  /* In milliseconds */ +#define PYX_TRANSPORT_WINDOW_CLOSED_WAIT_LONG	10 /* In milliseconds */ + +#define PYX_TRANSPORT_STATUS_INTERVAL		5 /* In seconds */ + +/* + * struct se_subsystem_dev->su_dev_flags +*/ +#define SDF_FIRMWARE_VPD_UNIT_SERIAL		0x00000001 +#define SDF_EMULATED_VPD_UNIT_SERIAL		0x00000002 +#define SDF_USING_UDEV_PATH			0x00000004 +#define SDF_USING_ALIAS				0x00000008 + +/* + * struct se_device->dev_flags + */ +#define DF_READ_ONLY				0x00000001 +#define DF_SPC2_RESERVATIONS			0x00000002 +#define DF_SPC2_RESERVATIONS_WITH_ISID		0x00000004 + +/* struct se_dev_attrib sanity values */ +/* Default max_unmap_lba_count */ +#define DA_MAX_UNMAP_LBA_COUNT			0 +/* Default max_unmap_block_desc_count */ +#define DA_MAX_UNMAP_BLOCK_DESC_COUNT		0 +/* Default unmap_granularity */ +#define DA_UNMAP_GRANULARITY_DEFAULT		0 +/* Default unmap_granularity_alignment */ +#define DA_UNMAP_GRANULARITY_ALIGNMENT_DEFAULT	0 +/* Emulation for Direct Page Out */ +#define DA_EMULATE_DPO				0 +/* Emulation for Forced Unit Access WRITEs */ +#define DA_EMULATE_FUA_WRITE			1 +/* Emulation for Forced Unit Access READs */ +#define DA_EMULATE_FUA_READ			0 +/* Emulation for WriteCache and SYNCHRONIZE_CACHE */ +#define DA_EMULATE_WRITE_CACHE			0 +/* Emulation for UNIT ATTENTION Interlock Control */ +#define DA_EMULATE_UA_INTLLCK_CTRL		0 +/* Emulation for TASK_ABORTED status (TAS) by default */ +#define DA_EMULATE_TAS				1 +/* Emulation for Thin Provisioning UNMAP using block/blk-lib.c:blkdev_issue_discard() */ +#define DA_EMULATE_TPU				0 +/* + * Emulation for Thin Provisioning WRITE_SAME w/ UNMAP=1 bit using + * block/blk-lib.c:blkdev_issue_discard() + */ +#define DA_EMULATE_TPWS				0 +/* No Emulation for PSCSI by default */ +#define DA_EMULATE_RESERVATIONS			0 +/* No Emulation for PSCSI by default */ +#define DA_EMULATE_ALUA				0 +/* Enforce SCSI Initiator Port TransportID with 'ISID' for PR */ +#define DA_ENFORCE_PR_ISIDS			1 +#define DA_STATUS_MAX_SECTORS_MIN		16 +#define DA_STATUS_MAX_SECTORS_MAX		8192 +/* By default don't report non-rotating (solid state) medium */ +#define DA_IS_NONROT				0 +/* Queue Algorithm Modifier default for restricted reordering in control mode page */ +#define DA_EMULATE_REST_REORD			0 + +#define SE_MODE_PAGE_BUF			512 + +  /* struct se_hba->hba_flags */  enum hba_flags_table {  	HBA_FLAGS_INTERNAL_USE	= 0x01, @@ -158,6 +225,30 @@ enum tcm_sense_reason_table {  	TCM_RESERVATION_CONFLICT		= 0x10,  }; +/* fabric independent task management function values */ +enum tcm_tmreq_table { +	TMR_ABORT_TASK		= 1, +	TMR_ABORT_TASK_SET	= 2, +	TMR_CLEAR_ACA		= 3, +	TMR_CLEAR_TASK_SET	= 4, +	TMR_LUN_RESET		= 5, +	TMR_TARGET_WARM_RESET	= 6, +	TMR_TARGET_COLD_RESET	= 7, +	TMR_FABRIC_TMR		= 255, +}; + +/* fabric independent task management response values */ +enum tcm_tmrsp_table { +	TMR_FUNCTION_COMPLETE		= 0, +	TMR_TASK_DOES_NOT_EXIST		= 1, +	TMR_LUN_DOES_NOT_EXIST		= 2, +	TMR_TASK_STILL_ALLEGIANT	= 3, +	TMR_TASK_FAILOVER_NOT_SUPPORTED	= 4, +	TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED	= 5, +	TMR_FUNCTION_AUTHORIZATION_FAILED = 6, +	TMR_FUNCTION_REJECTED		= 255, +}; +  struct se_obj {  	atomic_t obj_access_count;  } ____cacheline_aligned; diff --git a/include/target/target_core_device.h b/include/target/target_core_device.h deleted file mode 100644 index c6123a49014..00000000000 --- a/include/target/target_core_device.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef TARGET_CORE_DEVICE_H -#define TARGET_CORE_DEVICE_H - - -// external -extern int transport_lookup_cmd_lun(struct se_cmd *, u32); -extern int transport_lookup_tmr_lun(struct se_cmd *, u32); - -#endif /* TARGET_CORE_DEVICE_H */ diff --git a/include/target/target_core_fabric_ops.h b/include/target/target_core_fabric.h index 0256825f923..d035d865dbe 100644 --- a/include/target/target_core_fabric_ops.h +++ b/include/target/target_core_fabric.h @@ -1,5 +1,5 @@ -/* Defined in target_core_configfs.h */ -struct target_fabric_configfs; +#ifndef TARGET_CORE_FABRIC_H +#define TARGET_CORE_FABRIC_H  struct target_core_fabric_ops {  	struct configfs_subsystem *tf_subsys; @@ -103,3 +103,87 @@ struct target_core_fabric_ops {  				struct config_group *, const char *);  	void (*fabric_drop_nodeacl)(struct se_node_acl *);  }; + +struct se_session *transport_init_session(void); +void	__transport_register_session(struct se_portal_group *, +		struct se_node_acl *, struct se_session *, void *); +void	transport_register_session(struct se_portal_group *, +		struct se_node_acl *, struct se_session *, void *); +void	transport_free_session(struct se_session *); +void	transport_deregister_session_configfs(struct se_session *); +void	transport_deregister_session(struct se_session *); + + +void	transport_init_se_cmd(struct se_cmd *, struct target_core_fabric_ops *, +		struct se_session *, u32, int, int, unsigned char *); +int	transport_lookup_cmd_lun(struct se_cmd *, u32); +int	transport_generic_allocate_tasks(struct se_cmd *, unsigned char *); +int	transport_handle_cdb_direct(struct se_cmd *); +int	transport_generic_handle_cdb_map(struct se_cmd *); +int	transport_generic_handle_data(struct se_cmd *); +int	transport_generic_map_mem_to_cmd(struct se_cmd *cmd, +		struct scatterlist *, u32, struct scatterlist *, u32); +void	transport_do_task_sg_chain(struct se_cmd *); +int	transport_generic_new_cmd(struct se_cmd *); + +void	transport_generic_process_write(struct se_cmd *); + +void	transport_generic_free_cmd(struct se_cmd *, int); + +bool	transport_wait_for_tasks(struct se_cmd *); +int	transport_check_aborted_status(struct se_cmd *, int); +int	transport_send_check_condition_and_sense(struct se_cmd *, u8, int); + +void	target_get_sess_cmd(struct se_session *, struct se_cmd *); +int	target_put_sess_cmd(struct se_session *, struct se_cmd *); +void	target_splice_sess_cmd_list(struct se_session *); +void	target_wait_for_sess_cmds(struct se_session *, int); + +int	core_alua_check_nonop_delay(struct se_cmd *); + +struct se_tmr_req *core_tmr_alloc_req(struct se_cmd *, void *, u8, gfp_t); +void	core_tmr_release_req(struct se_tmr_req *); +int	transport_generic_handle_tmr(struct se_cmd *); +int	transport_lookup_tmr_lun(struct se_cmd *, u32); + +struct se_node_acl *core_tpg_check_initiator_node_acl(struct se_portal_group *, +		unsigned char *); +void	core_tpg_clear_object_luns(struct se_portal_group *); +struct se_node_acl *core_tpg_add_initiator_node_acl(struct se_portal_group *, +		struct se_node_acl *, const char *, u32); +int	core_tpg_del_initiator_node_acl(struct se_portal_group *, +		struct se_node_acl *, int); +int	core_tpg_set_initiator_node_queue_depth(struct se_portal_group *, +		unsigned char *, u32, int); +int	core_tpg_register(struct target_core_fabric_ops *, struct se_wwn *, +		struct se_portal_group *, void *, int); +int	core_tpg_deregister(struct se_portal_group *); + +/* SAS helpers */ +u8	sas_get_fabric_proto_ident(struct se_portal_group *); +u32	sas_get_pr_transport_id(struct se_portal_group *, struct se_node_acl *, +		struct t10_pr_registration *, int *, unsigned char *); +u32	sas_get_pr_transport_id_len(struct se_portal_group *, struct se_node_acl *, +		struct t10_pr_registration *, int *); +char	*sas_parse_pr_out_transport_id(struct se_portal_group *, const char *, +		u32 *, char **); + +/* FC helpers */ +u8	fc_get_fabric_proto_ident(struct se_portal_group *); +u32	fc_get_pr_transport_id(struct se_portal_group *, struct se_node_acl *, +		struct t10_pr_registration *, int *, unsigned char *); +u32	fc_get_pr_transport_id_len(struct se_portal_group *, struct se_node_acl *, +		struct t10_pr_registration *, int *); +char	*fc_parse_pr_out_transport_id(struct se_portal_group *, const char *, +		u32 *, char **); + +/* iSCSI helpers */ +u8	iscsi_get_fabric_proto_ident(struct se_portal_group *); +u32	iscsi_get_pr_transport_id(struct se_portal_group *, struct se_node_acl *, +		struct t10_pr_registration *, int *, unsigned char *); +u32	iscsi_get_pr_transport_id_len(struct se_portal_group *, struct se_node_acl *, +		struct t10_pr_registration *, int *); +char	*iscsi_parse_pr_out_transport_id(struct se_portal_group *, const char *, +		u32 *, char **); + +#endif /* TARGET_CORE_FABRICH */ diff --git a/include/target/target_core_fabric_lib.h b/include/target/target_core_fabric_lib.h deleted file mode 100644 index c2f8d0e3a03..00000000000 --- a/include/target/target_core_fabric_lib.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef TARGET_CORE_FABRIC_LIB_H -#define TARGET_CORE_FABRIC_LIB_H - -extern u8 sas_get_fabric_proto_ident(struct se_portal_group *); -extern u32 sas_get_pr_transport_id(struct se_portal_group *, struct se_node_acl *, -			struct t10_pr_registration *, int *, unsigned char *); -extern u32 sas_get_pr_transport_id_len(struct se_portal_group *, struct se_node_acl *, -			struct t10_pr_registration *, int *); -extern char *sas_parse_pr_out_transport_id(struct se_portal_group *, -			const char *, u32 *, char **); - -extern u8 fc_get_fabric_proto_ident(struct se_portal_group *); -extern u32 fc_get_pr_transport_id(struct se_portal_group *, struct se_node_acl *, -			struct t10_pr_registration *, int *, unsigned char *); -extern u32 fc_get_pr_transport_id_len(struct se_portal_group *, struct se_node_acl *, -			struct t10_pr_registration *, int *); -extern char *fc_parse_pr_out_transport_id(struct se_portal_group *, -			const char *, u32 *, char **); - -extern u8 iscsi_get_fabric_proto_ident(struct se_portal_group *); -extern u32 iscsi_get_pr_transport_id(struct se_portal_group *, struct se_node_acl *, -			struct t10_pr_registration *, int *, unsigned char *); -extern u32 iscsi_get_pr_transport_id_len(struct se_portal_group *, struct se_node_acl *, -			struct t10_pr_registration *, int *); -extern char *iscsi_parse_pr_out_transport_id(struct se_portal_group *, -			const char *, u32 *, char **); - -#endif /* TARGET_CORE_FABRIC_LIB_H */ diff --git a/include/target/target_core_tmr.h b/include/target/target_core_tmr.h deleted file mode 100644 index 36b3e0de99b..00000000000 --- a/include/target/target_core_tmr.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef TARGET_CORE_TMR_H -#define TARGET_CORE_TMR_H - -/* fabric independent task management function values */ -enum tcm_tmreq_table { -	TMR_ABORT_TASK		= 1, -	TMR_ABORT_TASK_SET	= 2, -	TMR_CLEAR_ACA		= 3, -	TMR_CLEAR_TASK_SET	= 4, -	TMR_LUN_RESET		= 5, -	TMR_TARGET_WARM_RESET	= 6, -	TMR_TARGET_COLD_RESET	= 7, -	TMR_FABRIC_TMR		= 255, -}; - -/* fabric independent task management response values */ -enum tcm_tmrsp_table { -	TMR_FUNCTION_COMPLETE		= 0, -	TMR_TASK_DOES_NOT_EXIST		= 1, -	TMR_LUN_DOES_NOT_EXIST		= 2, -	TMR_TASK_STILL_ALLEGIANT	= 3, -	TMR_TASK_FAILOVER_NOT_SUPPORTED	= 4, -	TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED	= 5, -	TMR_FUNCTION_AUTHORIZATION_FAILED = 6, -	TMR_FUNCTION_REJECTED		= 255, -}; - -extern struct se_tmr_req *core_tmr_alloc_req(struct se_cmd *, void *, u8, gfp_t); -extern void core_tmr_release_req(struct se_tmr_req *); - -#endif /* TARGET_CORE_TMR_H */ diff --git a/include/target/target_core_tpg.h b/include/target/target_core_tpg.h deleted file mode 100644 index 80ae59fdada..00000000000 --- a/include/target/target_core_tpg.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef TARGET_CORE_TPG_H -#define TARGET_CORE_TPG_H - -extern struct se_node_acl *core_tpg_check_initiator_node_acl( -						struct se_portal_group *, -						unsigned char *); -extern void core_tpg_clear_object_luns(struct se_portal_group *); -extern struct se_node_acl *core_tpg_add_initiator_node_acl( -					struct se_portal_group *, -					struct se_node_acl *, -					const char *, u32); -extern int core_tpg_del_initiator_node_acl(struct se_portal_group *, -						struct se_node_acl *, int); -extern int core_tpg_set_initiator_node_queue_depth(struct se_portal_group *, -						unsigned char *, u32, int); -extern int core_tpg_register(struct target_core_fabric_ops *, -					struct se_wwn *, -					struct se_portal_group *, void *, -					int); -extern int core_tpg_deregister(struct se_portal_group *); - -#endif /* TARGET_CORE_TPG_H */ diff --git a/include/target/target_core_transport.h b/include/target/target_core_transport.h deleted file mode 100644 index 68fe1f2c081..00000000000 --- a/include/target/target_core_transport.h +++ /dev/null @@ -1,256 +0,0 @@ -#ifndef TARGET_CORE_TRANSPORT_H -#define TARGET_CORE_TRANSPORT_H - -#define TARGET_CORE_VERSION			TARGET_CORE_MOD_VERSION - -/* Attempts before moving from SHORT to LONG */ -#define PYX_TRANSPORT_WINDOW_CLOSED_THRESHOLD	3 -#define PYX_TRANSPORT_WINDOW_CLOSED_WAIT_SHORT	3  /* In milliseconds */ -#define PYX_TRANSPORT_WINDOW_CLOSED_WAIT_LONG	10 /* In milliseconds */ - -#define PYX_TRANSPORT_STATUS_INTERVAL		5 /* In seconds */ - -#define TRANSPORT_PLUGIN_PHBA_PDEV		1 -#define TRANSPORT_PLUGIN_VHBA_PDEV		2 -#define TRANSPORT_PLUGIN_VHBA_VDEV		3 - -/* - * struct se_subsystem_dev->su_dev_flags -*/ -#define SDF_FIRMWARE_VPD_UNIT_SERIAL		0x00000001 -#define SDF_EMULATED_VPD_UNIT_SERIAL		0x00000002 -#define SDF_USING_UDEV_PATH			0x00000004 -#define SDF_USING_ALIAS				0x00000008 - -/* - * struct se_device->dev_flags - */ -#define DF_READ_ONLY				0x00000001 -#define DF_SPC2_RESERVATIONS			0x00000002 -#define DF_SPC2_RESERVATIONS_WITH_ISID		0x00000004 - -/* struct se_dev_attrib sanity values */ -/* Default max_unmap_lba_count */ -#define DA_MAX_UNMAP_LBA_COUNT			0 -/* Default max_unmap_block_desc_count */ -#define DA_MAX_UNMAP_BLOCK_DESC_COUNT		0 -/* Default unmap_granularity */ -#define DA_UNMAP_GRANULARITY_DEFAULT		0 -/* Default unmap_granularity_alignment */ -#define DA_UNMAP_GRANULARITY_ALIGNMENT_DEFAULT	0 -/* Emulation for Direct Page Out */ -#define DA_EMULATE_DPO				0 -/* Emulation for Forced Unit Access WRITEs */ -#define DA_EMULATE_FUA_WRITE			1 -/* Emulation for Forced Unit Access READs */ -#define DA_EMULATE_FUA_READ			0 -/* Emulation for WriteCache and SYNCHRONIZE_CACHE */ -#define DA_EMULATE_WRITE_CACHE			0 -/* Emulation for UNIT ATTENTION Interlock Control */ -#define DA_EMULATE_UA_INTLLCK_CTRL		0 -/* Emulation for TASK_ABORTED status (TAS) by default */ -#define DA_EMULATE_TAS				1 -/* Emulation for Thin Provisioning UNMAP using block/blk-lib.c:blkdev_issue_discard() */ -#define DA_EMULATE_TPU				0 -/* - * Emulation for Thin Provisioning WRITE_SAME w/ UNMAP=1 bit using - * block/blk-lib.c:blkdev_issue_discard() - */ -#define DA_EMULATE_TPWS				0 -/* No Emulation for PSCSI by default */ -#define DA_EMULATE_RESERVATIONS			0 -/* No Emulation for PSCSI by default */ -#define DA_EMULATE_ALUA				0 -/* Enforce SCSI Initiator Port TransportID with 'ISID' for PR */ -#define DA_ENFORCE_PR_ISIDS			1 -#define DA_STATUS_MAX_SECTORS_MIN		16 -#define DA_STATUS_MAX_SECTORS_MAX		8192 -/* By default don't report non-rotating (solid state) medium */ -#define DA_IS_NONROT				0 -/* Queue Algorithm Modifier default for restricted reordering in control mode page */ -#define DA_EMULATE_REST_REORD			0 - -#define SE_MODE_PAGE_BUF			512 - -#define MOD_MAX_SECTORS(ms, bs)			(ms % (PAGE_SIZE / bs)) - -struct se_subsystem_api; - -extern int transport_subsystem_register(struct se_subsystem_api *); -extern void transport_subsystem_release(struct se_subsystem_api *); -extern struct se_session *transport_init_session(void); -extern void __transport_register_session(struct se_portal_group *, -					struct se_node_acl *, -					struct se_session *, void *); -extern void transport_register_session(struct se_portal_group *, -					struct se_node_acl *, -					struct se_session *, void *); -extern void transport_free_session(struct se_session *); -extern void transport_deregister_session_configfs(struct se_session *); -extern void transport_deregister_session(struct se_session *); -extern void transport_complete_sync_cache(struct se_cmd *, int); -extern void transport_complete_task(struct se_task *, int); - -extern void transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *); -extern int transport_set_vpd_assoc(struct t10_vpd *, unsigned char *); -extern int transport_set_vpd_ident_type(struct t10_vpd *, unsigned char *); -extern int transport_set_vpd_ident(struct t10_vpd *, unsigned char *); - -extern struct se_device *transport_add_device_to_core_hba(struct se_hba *, -					struct se_subsystem_api *, -					struct se_subsystem_dev *, u32, -					void *, struct se_dev_limits *, -					const char *, const char *); -extern void transport_init_se_cmd(struct se_cmd *, -					struct target_core_fabric_ops *, -					struct se_session *, u32, int, int, -					unsigned char *); -void *transport_kmap_first_data_page(struct se_cmd *cmd); -void transport_kunmap_first_data_page(struct se_cmd *cmd); -extern int transport_generic_allocate_tasks(struct se_cmd *, unsigned char *); -extern int transport_handle_cdb_direct(struct se_cmd *); -extern int transport_generic_handle_cdb_map(struct se_cmd *); -extern int transport_generic_handle_data(struct se_cmd *); -extern int transport_generic_handle_tmr(struct se_cmd *); -extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, -				struct scatterlist *, u32); -extern bool transport_wait_for_tasks(struct se_cmd *); -extern int transport_check_aborted_status(struct se_cmd *, int); -extern int transport_send_check_condition_and_sense(struct se_cmd *, u8, int); -extern void transport_generic_free_cmd(struct se_cmd *, int); -extern void target_get_sess_cmd(struct se_session *, struct se_cmd *); -extern int target_put_sess_cmd(struct se_session *, struct se_cmd *); -extern void target_splice_sess_cmd_list(struct se_session *); -extern void target_wait_for_sess_cmds(struct se_session *, int); -extern void transport_do_task_sg_chain(struct se_cmd *); -extern void transport_generic_process_write(struct se_cmd *); -extern int transport_generic_new_cmd(struct se_cmd *); -/* From target_core_alua.c */ -extern int core_alua_check_nonop_delay(struct se_cmd *); -/* From target_core_cdb.c */ -extern void target_get_task_cdb(struct se_task *task, unsigned char *cdb); - -/* - * Each se_transport_task_t can have N number of possible struct se_task's - * for the storage transport(s) to possibly execute. - * Used primarily for splitting up CDBs that exceed the physical storage - * HBA's maximum sector count per task. - */ -struct se_mem { -	struct page	*se_page; -	u32		se_len; -	u32		se_off; -	struct list_head se_list; -} ____cacheline_aligned; - -/* - * 	Each type of disk transport supported MUST have a template defined - *	within its .h file. - */ -struct se_subsystem_api { -	/* -	 * The Name. :-) -	 */ -	char name[16]; -	/* -	 * Transport Type. -	 */ -	u8 transport_type; - -	unsigned int fua_write_emulated : 1; -	unsigned int write_cache_emulated : 1; - -	/* -	 * struct module for struct se_hba references -	 */ -	struct module *owner; -	/* -	 * Used for global se_subsystem_api list_head -	 */ -	struct list_head sub_api_list; -	/* -	 * attach_hba(): -	 */ -	int (*attach_hba)(struct se_hba *, u32); -	/* -	 * detach_hba(): -	 */ -	void (*detach_hba)(struct se_hba *); -	/* -	 * pmode_hba(): Used for TCM/pSCSI subsystem plugin HBA -> -	 *		Linux/SCSI struct Scsi_Host passthrough -	*/ -	int (*pmode_enable_hba)(struct se_hba *, unsigned long); -	/* -	 * allocate_virtdevice(): -	 */ -	void *(*allocate_virtdevice)(struct se_hba *, const char *); -	/* -	 * create_virtdevice(): Only for Virtual HBAs -	 */ -	struct se_device *(*create_virtdevice)(struct se_hba *, -				struct se_subsystem_dev *, void *); -	/* -	 * free_device(): -	 */ -	void (*free_device)(void *); - -	/* -	 * transport_complete(): -	 * -	 * Use transport_generic_complete() for majority of DAS transport -	 * drivers.  Provided out of convenience. -	 */ -	int (*transport_complete)(struct se_task *task); -	struct se_task *(*alloc_task)(unsigned char *cdb); -	/* -	 * do_task(): -	 */ -	int (*do_task)(struct se_task *); -	/* -	 * Used by virtual subsystem plugins IBLOCK and FILEIO to emulate -	 * UNMAP and WRITE_SAME_* w/ UNMAP=1 <-> Linux/Block Discard -	 */ -	int (*do_discard)(struct se_device *, sector_t, u32); -	/* -	 * Used  by virtual subsystem plugins IBLOCK and FILEIO to emulate -	 * SYNCHRONIZE_CACHE_* <-> Linux/Block blkdev_issue_flush() -	 */ -	void (*do_sync_cache)(struct se_task *); -	/* -	 * free_task(): -	 */ -	void (*free_task)(struct se_task *); -	/* -	 * check_configfs_dev_params(): -	 */ -	ssize_t (*check_configfs_dev_params)(struct se_hba *, struct se_subsystem_dev *); -	/* -	 * set_configfs_dev_params(): -	 */ -	ssize_t (*set_configfs_dev_params)(struct se_hba *, struct se_subsystem_dev *, -						const char *, ssize_t); -	/* -	 * show_configfs_dev_params(): -	 */ -	ssize_t (*show_configfs_dev_params)(struct se_hba *, struct se_subsystem_dev *, -						char *); -	/* -	 * get_device_rev(): -	 */ -	u32 (*get_device_rev)(struct se_device *); -	/* -	 * get_device_type(): -	 */ -	u32 (*get_device_type)(struct se_device *); -	/* -	 * Get the sector_t from a subsystem backstore.. -	 */ -	sector_t (*get_blocks)(struct se_device *); -	/* -	 * get_sense_buffer(): -	 */ -	unsigned char *(*get_sense_buffer)(struct se_task *); -} ____cacheline_aligned; - -#endif /* TARGET_CORE_TRANSPORT_H */  |