diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/scsi/libiscsi_tcp.h | 1 | ||||
| -rw-r--r-- | include/scsi/scsi_device.h | 2 | ||||
| -rw-r--r-- | include/target/target_core_base.h | 73 | ||||
| -rw-r--r-- | include/target/target_core_configfs.h | 4 | ||||
| -rw-r--r-- | include/target/target_core_fabric_ops.h | 2 | ||||
| -rw-r--r-- | include/target/target_core_tmr.h | 52 | ||||
| -rw-r--r-- | include/target/target_core_transport.h | 4 |
7 files changed, 85 insertions, 53 deletions
diff --git a/include/scsi/libiscsi_tcp.h b/include/scsi/libiscsi_tcp.h index 741ae7ed4394..e6b9fd2eea34 100644 --- a/include/scsi/libiscsi_tcp.h +++ b/include/scsi/libiscsi_tcp.h | |||
| @@ -47,6 +47,7 @@ struct iscsi_segment { | |||
| 47 | struct scatterlist *sg; | 47 | struct scatterlist *sg; |
| 48 | void *sg_mapped; | 48 | void *sg_mapped; |
| 49 | unsigned int sg_offset; | 49 | unsigned int sg_offset; |
| 50 | bool atomic_mapped; | ||
| 50 | 51 | ||
| 51 | iscsi_segment_done_fn_t *done; | 52 | iscsi_segment_done_fn_t *done; |
| 52 | }; | 53 | }; |
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index f171c65dc5a8..2d3ec5094685 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
| @@ -462,7 +462,7 @@ static inline int scsi_device_qas(struct scsi_device *sdev) | |||
| 462 | } | 462 | } |
| 463 | static inline int scsi_device_enclosure(struct scsi_device *sdev) | 463 | static inline int scsi_device_enclosure(struct scsi_device *sdev) |
| 464 | { | 464 | { |
| 465 | return sdev->inquiry[6] & (1<<6); | 465 | return sdev->inquiry ? (sdev->inquiry[6] & (1<<6)) : 1; |
| 466 | } | 466 | } |
| 467 | 467 | ||
| 468 | static inline int scsi_device_protection(struct scsi_device *sdev) | 468 | static inline int scsi_device_protection(struct scsi_device *sdev) |
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 0828b6c8610a..c15ed5026fb5 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | #include <net/sock.h> | 9 | #include <net/sock.h> |
| 10 | #include <net/tcp.h> | 10 | #include <net/tcp.h> |
| 11 | 11 | ||
| 12 | #define TARGET_CORE_MOD_VERSION "v4.0.0-rc6" | 12 | #define TARGET_CORE_MOD_VERSION "v4.0.0-rc7-ml" |
| 13 | #define SHUTDOWN_SIGS (sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGABRT)) | 13 | #define SHUTDOWN_SIGS (sigmask(SIGKILL)|sigmask(SIGINT)|sigmask(SIGABRT)) |
| 14 | 14 | ||
| 15 | /* Used by transport_generic_allocate_iovecs() */ | 15 | /* Used by transport_generic_allocate_iovecs() */ |
| @@ -239,7 +239,7 @@ struct t10_alua_lu_gp { | |||
| 239 | } ____cacheline_aligned; | 239 | } ____cacheline_aligned; |
| 240 | 240 | ||
| 241 | struct t10_alua_lu_gp_member { | 241 | struct t10_alua_lu_gp_member { |
| 242 | int lu_gp_assoc:1; | 242 | bool lu_gp_assoc; |
| 243 | atomic_t lu_gp_mem_ref_cnt; | 243 | atomic_t lu_gp_mem_ref_cnt; |
| 244 | spinlock_t lu_gp_mem_lock; | 244 | spinlock_t lu_gp_mem_lock; |
| 245 | struct t10_alua_lu_gp *lu_gp; | 245 | struct t10_alua_lu_gp *lu_gp; |
| @@ -271,7 +271,7 @@ struct t10_alua_tg_pt_gp { | |||
| 271 | } ____cacheline_aligned; | 271 | } ____cacheline_aligned; |
| 272 | 272 | ||
| 273 | struct t10_alua_tg_pt_gp_member { | 273 | struct t10_alua_tg_pt_gp_member { |
| 274 | int tg_pt_gp_assoc:1; | 274 | bool tg_pt_gp_assoc; |
| 275 | atomic_t tg_pt_gp_mem_ref_cnt; | 275 | atomic_t tg_pt_gp_mem_ref_cnt; |
| 276 | spinlock_t tg_pt_gp_mem_lock; | 276 | spinlock_t tg_pt_gp_mem_lock; |
| 277 | struct t10_alua_tg_pt_gp *tg_pt_gp; | 277 | struct t10_alua_tg_pt_gp *tg_pt_gp; |
| @@ -336,7 +336,7 @@ struct t10_pr_registration { | |||
| 336 | int pr_res_type; | 336 | int pr_res_type; |
| 337 | int pr_res_scope; | 337 | int pr_res_scope; |
| 338 | /* Used for fabric initiator WWPNs using a ISID */ | 338 | /* Used for fabric initiator WWPNs using a ISID */ |
| 339 | int isid_present_at_reg:1; | 339 | bool isid_present_at_reg; |
| 340 | u32 pr_res_mapped_lun; | 340 | u32 pr_res_mapped_lun; |
| 341 | u32 pr_aptpl_target_lun; | 341 | u32 pr_aptpl_target_lun; |
| 342 | u32 pr_res_generation; | 342 | u32 pr_res_generation; |
| @@ -418,7 +418,7 @@ struct se_transport_task { | |||
| 418 | unsigned long long t_task_lba; | 418 | unsigned long long t_task_lba; |
| 419 | int t_tasks_failed; | 419 | int t_tasks_failed; |
| 420 | int t_tasks_fua; | 420 | int t_tasks_fua; |
| 421 | int t_tasks_bidi:1; | 421 | bool t_tasks_bidi; |
| 422 | u32 t_task_cdbs; | 422 | u32 t_task_cdbs; |
| 423 | u32 t_tasks_check; | 423 | u32 t_tasks_check; |
| 424 | u32 t_tasks_no; | 424 | u32 t_tasks_no; |
| @@ -470,7 +470,7 @@ struct se_task { | |||
| 470 | u8 task_flags; | 470 | u8 task_flags; |
| 471 | int task_error_status; | 471 | int task_error_status; |
| 472 | int task_state_flags; | 472 | int task_state_flags; |
| 473 | int task_padded_sg:1; | 473 | bool task_padded_sg; |
| 474 | unsigned long long task_lba; | 474 | unsigned long long task_lba; |
| 475 | u32 task_no; | 475 | u32 task_no; |
| 476 | u32 task_sectors; | 476 | u32 task_sectors; |
| @@ -494,8 +494,8 @@ struct se_task { | |||
| 494 | struct list_head t_state_list; | 494 | struct list_head t_state_list; |
| 495 | } ____cacheline_aligned; | 495 | } ____cacheline_aligned; |
| 496 | 496 | ||
| 497 | #define TASK_CMD(task) ((struct se_cmd *)task->task_se_cmd) | 497 | #define TASK_CMD(task) ((task)->task_se_cmd) |
| 498 | #define TASK_DEV(task) ((struct se_device *)task->se_dev) | 498 | #define TASK_DEV(task) ((task)->se_dev) |
| 499 | 499 | ||
| 500 | struct se_cmd { | 500 | struct se_cmd { |
| 501 | /* SAM response code being sent to initiator */ | 501 | /* SAM response code being sent to initiator */ |
| @@ -551,8 +551,8 @@ struct se_cmd { | |||
| 551 | void (*transport_complete_callback)(struct se_cmd *); | 551 | void (*transport_complete_callback)(struct se_cmd *); |
| 552 | } ____cacheline_aligned; | 552 | } ____cacheline_aligned; |
| 553 | 553 | ||
| 554 | #define T_TASK(cmd) ((struct se_transport_task *)(cmd->t_task)) | 554 | #define T_TASK(cmd) ((cmd)->t_task) |
| 555 | #define CMD_TFO(cmd) ((struct target_core_fabric_ops *)cmd->se_tfo) | 555 | #define CMD_TFO(cmd) ((cmd)->se_tfo) |
| 556 | 556 | ||
| 557 | struct se_tmr_req { | 557 | struct se_tmr_req { |
| 558 | /* Task Management function to be preformed */ | 558 | /* Task Management function to be preformed */ |
| @@ -583,7 +583,7 @@ struct se_ua { | |||
| 583 | struct se_node_acl { | 583 | struct se_node_acl { |
| 584 | char initiatorname[TRANSPORT_IQN_LEN]; | 584 | char initiatorname[TRANSPORT_IQN_LEN]; |
| 585 | /* Used to signal demo mode created ACL, disabled by default */ | 585 | /* Used to signal demo mode created ACL, disabled by default */ |
| 586 | int dynamic_node_acl:1; | 586 | bool dynamic_node_acl; |
| 587 | u32 queue_depth; | 587 | u32 queue_depth; |
| 588 | u32 acl_index; | 588 | u32 acl_index; |
| 589 | u64 num_cmds; | 589 | u64 num_cmds; |
| @@ -601,7 +601,8 @@ struct se_node_acl { | |||
| 601 | struct config_group acl_attrib_group; | 601 | struct config_group acl_attrib_group; |
| 602 | struct config_group acl_auth_group; | 602 | struct config_group acl_auth_group; |
| 603 | struct config_group acl_param_group; | 603 | struct config_group acl_param_group; |
| 604 | struct config_group *acl_default_groups[4]; | 604 | struct config_group acl_fabric_stat_group; |
| 605 | struct config_group *acl_default_groups[5]; | ||
| 605 | struct list_head acl_list; | 606 | struct list_head acl_list; |
| 606 | struct list_head acl_sess_list; | 607 | struct list_head acl_sess_list; |
| 607 | } ____cacheline_aligned; | 608 | } ____cacheline_aligned; |
| @@ -615,13 +616,19 @@ struct se_session { | |||
| 615 | struct list_head sess_acl_list; | 616 | struct list_head sess_acl_list; |
| 616 | } ____cacheline_aligned; | 617 | } ____cacheline_aligned; |
| 617 | 618 | ||
| 618 | #define SE_SESS(cmd) ((struct se_session *)(cmd)->se_sess) | 619 | #define SE_SESS(cmd) ((cmd)->se_sess) |
| 619 | #define SE_NODE_ACL(sess) ((struct se_node_acl *)(sess)->se_node_acl) | 620 | #define SE_NODE_ACL(sess) ((sess)->se_node_acl) |
| 620 | 621 | ||
| 621 | struct se_device; | 622 | struct se_device; |
| 622 | struct se_transform_info; | 623 | struct se_transform_info; |
| 623 | struct scatterlist; | 624 | struct scatterlist; |
| 624 | 625 | ||
| 626 | struct se_ml_stat_grps { | ||
| 627 | struct config_group stat_group; | ||
| 628 | struct config_group scsi_auth_intr_group; | ||
| 629 | struct config_group scsi_att_intr_port_group; | ||
| 630 | }; | ||
| 631 | |||
| 625 | struct se_lun_acl { | 632 | struct se_lun_acl { |
| 626 | char initiatorname[TRANSPORT_IQN_LEN]; | 633 | char initiatorname[TRANSPORT_IQN_LEN]; |
| 627 | u32 mapped_lun; | 634 | u32 mapped_lun; |
| @@ -629,10 +636,13 @@ struct se_lun_acl { | |||
| 629 | struct se_lun *se_lun; | 636 | struct se_lun *se_lun; |
| 630 | struct list_head lacl_list; | 637 | struct list_head lacl_list; |
| 631 | struct config_group se_lun_group; | 638 | struct config_group se_lun_group; |
| 639 | struct se_ml_stat_grps ml_stat_grps; | ||
| 632 | } ____cacheline_aligned; | 640 | } ____cacheline_aligned; |
| 633 | 641 | ||
| 642 | #define ML_STAT_GRPS(lacl) (&(lacl)->ml_stat_grps) | ||
| 643 | |||
| 634 | struct se_dev_entry { | 644 | struct se_dev_entry { |
| 635 | int def_pr_registered:1; | 645 | bool def_pr_registered; |
| 636 | /* See transport_lunflags_table */ | 646 | /* See transport_lunflags_table */ |
| 637 | u32 lun_flags; | 647 | u32 lun_flags; |
| 638 | u32 deve_cmds; | 648 | u32 deve_cmds; |
| @@ -693,6 +703,13 @@ struct se_dev_attrib { | |||
| 693 | struct config_group da_group; | 703 | struct config_group da_group; |
| 694 | } ____cacheline_aligned; | 704 | } ____cacheline_aligned; |
| 695 | 705 | ||
| 706 | struct se_dev_stat_grps { | ||
| 707 | struct config_group stat_group; | ||
| 708 | struct config_group scsi_dev_group; | ||
| 709 | struct config_group scsi_tgt_dev_group; | ||
| 710 | struct config_group scsi_lu_group; | ||
| 711 | }; | ||
| 712 | |||
| 696 | struct se_subsystem_dev { | 713 | struct se_subsystem_dev { |
| 697 | /* Used for struct se_subsystem_dev-->se_dev_alias, must be less than PAGE_SIZE */ | 714 | /* Used for struct se_subsystem_dev-->se_dev_alias, must be less than PAGE_SIZE */ |
| 698 | #define SE_DEV_ALIAS_LEN 512 | 715 | #define SE_DEV_ALIAS_LEN 512 |
| @@ -716,11 +733,14 @@ struct se_subsystem_dev { | |||
| 716 | struct config_group se_dev_group; | 733 | struct config_group se_dev_group; |
| 717 | /* For T10 Reservations */ | 734 | /* For T10 Reservations */ |
| 718 | struct config_group se_dev_pr_group; | 735 | struct config_group se_dev_pr_group; |
| 736 | /* For target_core_stat.c groups */ | ||
| 737 | struct se_dev_stat_grps dev_stat_grps; | ||
| 719 | } ____cacheline_aligned; | 738 | } ____cacheline_aligned; |
| 720 | 739 | ||
| 721 | #define T10_ALUA(su_dev) (&(su_dev)->t10_alua) | 740 | #define T10_ALUA(su_dev) (&(su_dev)->t10_alua) |
| 722 | #define T10_RES(su_dev) (&(su_dev)->t10_reservation) | 741 | #define T10_RES(su_dev) (&(su_dev)->t10_reservation) |
| 723 | #define T10_PR_OPS(su_dev) (&(su_dev)->t10_reservation.pr_ops) | 742 | #define T10_PR_OPS(su_dev) (&(su_dev)->t10_reservation.pr_ops) |
| 743 | #define DEV_STAT_GRP(dev) (&(dev)->dev_stat_grps) | ||
| 724 | 744 | ||
| 725 | struct se_device { | 745 | struct se_device { |
| 726 | /* Set to 1 if thread is NOT sleeping on thread_sem */ | 746 | /* Set to 1 if thread is NOT sleeping on thread_sem */ |
| @@ -803,8 +823,8 @@ struct se_device { | |||
| 803 | struct list_head g_se_dev_list; | 823 | struct list_head g_se_dev_list; |
| 804 | } ____cacheline_aligned; | 824 | } ____cacheline_aligned; |
| 805 | 825 | ||
| 806 | #define SE_DEV(cmd) ((struct se_device *)(cmd)->se_lun->lun_se_dev) | 826 | #define SE_DEV(cmd) ((cmd)->se_lun->lun_se_dev) |
| 807 | #define SU_DEV(dev) ((struct se_subsystem_dev *)(dev)->se_sub_dev) | 827 | #define SU_DEV(dev) ((dev)->se_sub_dev) |
| 808 | #define DEV_ATTRIB(dev) (&(dev)->se_sub_dev->se_dev_attrib) | 828 | #define DEV_ATTRIB(dev) (&(dev)->se_sub_dev->se_dev_attrib) |
| 809 | #define DEV_T10_WWN(dev) (&(dev)->se_sub_dev->t10_wwn) | 829 | #define DEV_T10_WWN(dev) (&(dev)->se_sub_dev->t10_wwn) |
| 810 | 830 | ||
| @@ -832,7 +852,14 @@ struct se_hba { | |||
| 832 | struct se_subsystem_api *transport; | 852 | struct se_subsystem_api *transport; |
| 833 | } ____cacheline_aligned; | 853 | } ____cacheline_aligned; |
| 834 | 854 | ||
| 835 | #define SE_HBA(d) ((struct se_hba *)(d)->se_hba) | 855 | #define SE_HBA(dev) ((dev)->se_hba) |
| 856 | |||
| 857 | struct se_port_stat_grps { | ||
| 858 | struct config_group stat_group; | ||
| 859 | struct config_group scsi_port_group; | ||
| 860 | struct config_group scsi_tgt_port_group; | ||
| 861 | struct config_group scsi_transport_group; | ||
| 862 | }; | ||
| 836 | 863 | ||
| 837 | struct se_lun { | 864 | struct se_lun { |
| 838 | /* See transport_lun_status_table */ | 865 | /* See transport_lun_status_table */ |
| @@ -848,11 +875,13 @@ struct se_lun { | |||
| 848 | struct list_head lun_cmd_list; | 875 | struct list_head lun_cmd_list; |
| 849 | struct list_head lun_acl_list; | 876 | struct list_head lun_acl_list; |
| 850 | struct se_device *lun_se_dev; | 877 | struct se_device *lun_se_dev; |
| 878 | struct se_port *lun_sep; | ||
| 851 | struct config_group lun_group; | 879 | struct config_group lun_group; |
| 852 | struct se_port *lun_sep; | 880 | struct se_port_stat_grps port_stat_grps; |
| 853 | } ____cacheline_aligned; | 881 | } ____cacheline_aligned; |
| 854 | 882 | ||
| 855 | #define SE_LUN(c) ((struct se_lun *)(c)->se_lun) | 883 | #define SE_LUN(cmd) ((cmd)->se_lun) |
| 884 | #define PORT_STAT_GRP(lun) (&(lun)->port_stat_grps) | ||
| 856 | 885 | ||
| 857 | struct scsi_port_stats { | 886 | struct scsi_port_stats { |
| 858 | u64 cmd_pdus; | 887 | u64 cmd_pdus; |
| @@ -919,11 +948,13 @@ struct se_portal_group { | |||
| 919 | struct config_group tpg_param_group; | 948 | struct config_group tpg_param_group; |
| 920 | } ____cacheline_aligned; | 949 | } ____cacheline_aligned; |
| 921 | 950 | ||
| 922 | #define TPG_TFO(se_tpg) ((struct target_core_fabric_ops *)(se_tpg)->se_tpg_tfo) | 951 | #define TPG_TFO(se_tpg) ((se_tpg)->se_tpg_tfo) |
| 923 | 952 | ||
| 924 | struct se_wwn { | 953 | struct se_wwn { |
| 925 | struct target_fabric_configfs *wwn_tf; | 954 | struct target_fabric_configfs *wwn_tf; |
| 926 | struct config_group wwn_group; | 955 | struct config_group wwn_group; |
| 956 | struct config_group *wwn_default_groups[2]; | ||
| 957 | struct config_group fabric_stat_group; | ||
| 927 | } ____cacheline_aligned; | 958 | } ____cacheline_aligned; |
| 928 | 959 | ||
| 929 | struct se_global { | 960 | struct se_global { |
diff --git a/include/target/target_core_configfs.h b/include/target/target_core_configfs.h index 40e6e740527c..612509592ffd 100644 --- a/include/target/target_core_configfs.h +++ b/include/target/target_core_configfs.h | |||
| @@ -14,10 +14,12 @@ extern void target_fabric_configfs_deregister(struct target_fabric_configfs *); | |||
| 14 | struct target_fabric_configfs_template { | 14 | struct target_fabric_configfs_template { |
| 15 | struct config_item_type tfc_discovery_cit; | 15 | struct config_item_type tfc_discovery_cit; |
| 16 | struct config_item_type tfc_wwn_cit; | 16 | struct config_item_type tfc_wwn_cit; |
| 17 | struct config_item_type tfc_wwn_fabric_stats_cit; | ||
| 17 | struct config_item_type tfc_tpg_cit; | 18 | struct config_item_type tfc_tpg_cit; |
| 18 | struct config_item_type tfc_tpg_base_cit; | 19 | struct config_item_type tfc_tpg_base_cit; |
| 19 | struct config_item_type tfc_tpg_lun_cit; | 20 | struct config_item_type tfc_tpg_lun_cit; |
| 20 | struct config_item_type tfc_tpg_port_cit; | 21 | struct config_item_type tfc_tpg_port_cit; |
| 22 | struct config_item_type tfc_tpg_port_stat_cit; | ||
| 21 | struct config_item_type tfc_tpg_np_cit; | 23 | struct config_item_type tfc_tpg_np_cit; |
| 22 | struct config_item_type tfc_tpg_np_base_cit; | 24 | struct config_item_type tfc_tpg_np_base_cit; |
| 23 | struct config_item_type tfc_tpg_attrib_cit; | 25 | struct config_item_type tfc_tpg_attrib_cit; |
| @@ -27,7 +29,9 @@ struct target_fabric_configfs_template { | |||
| 27 | struct config_item_type tfc_tpg_nacl_attrib_cit; | 29 | struct config_item_type tfc_tpg_nacl_attrib_cit; |
| 28 | struct config_item_type tfc_tpg_nacl_auth_cit; | 30 | struct config_item_type tfc_tpg_nacl_auth_cit; |
| 29 | struct config_item_type tfc_tpg_nacl_param_cit; | 31 | struct config_item_type tfc_tpg_nacl_param_cit; |
| 32 | struct config_item_type tfc_tpg_nacl_stat_cit; | ||
| 30 | struct config_item_type tfc_tpg_mappedlun_cit; | 33 | struct config_item_type tfc_tpg_mappedlun_cit; |
| 34 | struct config_item_type tfc_tpg_mappedlun_stat_cit; | ||
| 31 | }; | 35 | }; |
| 32 | 36 | ||
| 33 | struct target_fabric_configfs { | 37 | struct target_fabric_configfs { |
diff --git a/include/target/target_core_fabric_ops.h b/include/target/target_core_fabric_ops.h index f3ac12b019c2..5eb8b1ae59d1 100644 --- a/include/target/target_core_fabric_ops.h +++ b/include/target/target_core_fabric_ops.h | |||
| @@ -8,7 +8,7 @@ struct target_core_fabric_ops { | |||
| 8 | * for scatterlist chaining using transport_do_task_sg_link(), | 8 | * for scatterlist chaining using transport_do_task_sg_link(), |
| 9 | * disabled by default | 9 | * disabled by default |
| 10 | */ | 10 | */ |
| 11 | int task_sg_chaining:1; | 11 | bool task_sg_chaining; |
| 12 | char *(*get_fabric_name)(void); | 12 | char *(*get_fabric_name)(void); |
| 13 | u8 (*get_fabric_proto_ident)(struct se_portal_group *); | 13 | u8 (*get_fabric_proto_ident)(struct se_portal_group *); |
| 14 | char *(*tpg_get_wwn)(struct se_portal_group *); | 14 | char *(*tpg_get_wwn)(struct se_portal_group *); |
diff --git a/include/target/target_core_tmr.h b/include/target/target_core_tmr.h index 6c8248bc2c66..bd5596807478 100644 --- a/include/target/target_core_tmr.h +++ b/include/target/target_core_tmr.h | |||
| @@ -1,37 +1,29 @@ | |||
| 1 | #ifndef TARGET_CORE_TMR_H | 1 | #ifndef TARGET_CORE_TMR_H |
| 2 | #define TARGET_CORE_TMR_H | 2 | #define TARGET_CORE_TMR_H |
| 3 | 3 | ||
| 4 | /* task management function values */ | 4 | /* fabric independent task management function values */ |
| 5 | #ifdef ABORT_TASK | 5 | enum tcm_tmreq_table { |
| 6 | #undef ABORT_TASK | 6 | TMR_ABORT_TASK = 1, |
| 7 | #endif /* ABORT_TASK */ | 7 | TMR_ABORT_TASK_SET = 2, |
| 8 | #define ABORT_TASK 1 | 8 | TMR_CLEAR_ACA = 3, |
| 9 | #ifdef ABORT_TASK_SET | 9 | TMR_CLEAR_TASK_SET = 4, |
| 10 | #undef ABORT_TASK_SET | 10 | TMR_LUN_RESET = 5, |
| 11 | #endif /* ABORT_TASK_SET */ | 11 | TMR_TARGET_WARM_RESET = 6, |
| 12 | #define ABORT_TASK_SET 2 | 12 | TMR_TARGET_COLD_RESET = 7, |
| 13 | #ifdef CLEAR_ACA | 13 | TMR_FABRIC_TMR = 255, |
| 14 | #undef CLEAR_ACA | 14 | }; |
| 15 | #endif /* CLEAR_ACA */ | ||
| 16 | #define CLEAR_ACA 3 | ||
| 17 | #ifdef CLEAR_TASK_SET | ||
| 18 | #undef CLEAR_TASK_SET | ||
| 19 | #endif /* CLEAR_TASK_SET */ | ||
| 20 | #define CLEAR_TASK_SET 4 | ||
| 21 | #define LUN_RESET 5 | ||
| 22 | #define TARGET_WARM_RESET 6 | ||
| 23 | #define TARGET_COLD_RESET 7 | ||
| 24 | #define TASK_REASSIGN 8 | ||
| 25 | 15 | ||
| 26 | /* task management response values */ | 16 | /* fabric independent task management response values */ |
| 27 | #define TMR_FUNCTION_COMPLETE 0 | 17 | enum tcm_tmrsp_table { |
| 28 | #define TMR_TASK_DOES_NOT_EXIST 1 | 18 | TMR_FUNCTION_COMPLETE = 0, |
| 29 | #define TMR_LUN_DOES_NOT_EXIST 2 | 19 | TMR_TASK_DOES_NOT_EXIST = 1, |
| 30 | #define TMR_TASK_STILL_ALLEGIANT 3 | 20 | TMR_LUN_DOES_NOT_EXIST = 2, |
| 31 | #define TMR_TASK_FAILOVER_NOT_SUPPORTED 4 | 21 | TMR_TASK_STILL_ALLEGIANT = 3, |
| 32 | #define TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED 5 | 22 | TMR_TASK_FAILOVER_NOT_SUPPORTED = 4, |
| 33 | #define TMR_FUNCTION_AUTHORIZATION_FAILED 6 | 23 | TMR_TASK_MGMT_FUNCTION_NOT_SUPPORTED = 5, |
| 34 | #define TMR_FUNCTION_REJECTED 255 | 24 | TMR_FUNCTION_AUTHORIZATION_FAILED = 6, |
| 25 | TMR_FUNCTION_REJECTED = 255, | ||
| 26 | }; | ||
| 35 | 27 | ||
| 36 | extern struct kmem_cache *se_tmr_req_cache; | 28 | extern struct kmem_cache *se_tmr_req_cache; |
| 37 | 29 | ||
diff --git a/include/target/target_core_transport.h b/include/target/target_core_transport.h index 2e8ec51f0615..59aa464f6ee2 100644 --- a/include/target/target_core_transport.h +++ b/include/target/target_core_transport.h | |||
| @@ -109,6 +109,8 @@ | |||
| 109 | struct se_mem; | 109 | struct se_mem; |
| 110 | struct se_subsystem_api; | 110 | struct se_subsystem_api; |
| 111 | 111 | ||
| 112 | extern struct kmem_cache *se_mem_cache; | ||
| 113 | |||
| 112 | extern int init_se_global(void); | 114 | extern int init_se_global(void); |
| 113 | extern void release_se_global(void); | 115 | extern void release_se_global(void); |
| 114 | extern void init_scsi_index_table(void); | 116 | extern void init_scsi_index_table(void); |
| @@ -190,6 +192,8 @@ extern void transport_generic_process_write(struct se_cmd *); | |||
| 190 | extern int transport_generic_do_tmr(struct se_cmd *); | 192 | extern int transport_generic_do_tmr(struct se_cmd *); |
| 191 | /* From target_core_alua.c */ | 193 | /* From target_core_alua.c */ |
| 192 | extern int core_alua_check_nonop_delay(struct se_cmd *); | 194 | extern int core_alua_check_nonop_delay(struct se_cmd *); |
| 195 | /* From target_core_cdb.c */ | ||
| 196 | extern int transport_emulate_control_cdb(struct se_task *); | ||
| 193 | 197 | ||
| 194 | /* | 198 | /* |
| 195 | * Each se_transport_task_t can have N number of possible struct se_task's | 199 | * Each se_transport_task_t can have N number of possible struct se_task's |
