Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.2.
 1/* Defined in target_core_configfs.h */
 2struct target_fabric_configfs;
 3
 4struct target_core_fabric_ops {
 5	struct configfs_subsystem *tf_subsys;
 6	/*
 7	 * Optional to signal struct se_task->task_sg[] padding entries
 8	 * for scatterlist chaining using transport_do_task_sg_link(),
 9	 * disabled by default
10	 */
11	bool task_sg_chaining;
12	char *(*get_fabric_name)(void);
13	u8 (*get_fabric_proto_ident)(struct se_portal_group *);
14	char *(*tpg_get_wwn)(struct se_portal_group *);
15	u16 (*tpg_get_tag)(struct se_portal_group *);
16	u32 (*tpg_get_default_depth)(struct se_portal_group *);
17	u32 (*tpg_get_pr_transport_id)(struct se_portal_group *,
18				struct se_node_acl *,
19				struct t10_pr_registration *, int *,
20				unsigned char *);
21	u32 (*tpg_get_pr_transport_id_len)(struct se_portal_group *,
22				struct se_node_acl *,
23				struct t10_pr_registration *, int *);
24	char *(*tpg_parse_pr_out_transport_id)(struct se_portal_group *,
25				const char *, u32 *, char **);
26	int (*tpg_check_demo_mode)(struct se_portal_group *);
27	int (*tpg_check_demo_mode_cache)(struct se_portal_group *);
28	int (*tpg_check_demo_mode_write_protect)(struct se_portal_group *);
29	int (*tpg_check_prod_mode_write_protect)(struct se_portal_group *);
30	/*
31	 * Optionally used by fabrics to allow demo-mode login, but not
32	 * expose any TPG LUNs, and return 'not connected' in standard
33	 * inquiry response
34	 */
35	int (*tpg_check_demo_mode_login_only)(struct se_portal_group *);
36	struct se_node_acl *(*tpg_alloc_fabric_acl)(
37					struct se_portal_group *);
38	void (*tpg_release_fabric_acl)(struct se_portal_group *,
39					struct se_node_acl *);
40	u32 (*tpg_get_inst_index)(struct se_portal_group *);
41	/*
42	 * Optional function pointer for TCM to perform command map
43	 * from TCM processing thread context, for those struct se_cmd
44	 * initially allocated in interrupt context.
45	 */
46	int (*new_cmd_map)(struct se_cmd *);
47	/*
48	 * Optional to release struct se_cmd and fabric dependent allocated
49	 * I/O descriptor in transport_cmd_check_stop()
50	 */
51	void (*check_stop_free)(struct se_cmd *);
52	void (*release_cmd)(struct se_cmd *);
53	/*
54	 * Called with spin_lock_bh(struct se_portal_group->session_lock held.
55	 */
56	int (*shutdown_session)(struct se_session *);
57	void (*close_session)(struct se_session *);
58	void (*stop_session)(struct se_session *, int, int);
59	void (*fall_back_to_erl0)(struct se_session *);
60	int (*sess_logged_in)(struct se_session *);
61	u32 (*sess_get_index)(struct se_session *);
62	/*
63	 * Used only for SCSI fabrics that contain multi-value TransportIDs
64	 * (like iSCSI).  All other SCSI fabrics should set this to NULL.
65	 */
66	u32 (*sess_get_initiator_sid)(struct se_session *,
67				      unsigned char *, u32);
68	int (*write_pending)(struct se_cmd *);
69	int (*write_pending_status)(struct se_cmd *);
70	void (*set_default_node_attributes)(struct se_node_acl *);
71	u32 (*get_task_tag)(struct se_cmd *);
72	int (*get_cmd_state)(struct se_cmd *);
73	int (*queue_data_in)(struct se_cmd *);
74	int (*queue_status)(struct se_cmd *);
75	int (*queue_tm_rsp)(struct se_cmd *);
76	u16 (*set_fabric_sense_len)(struct se_cmd *, u32);
77	u16 (*get_fabric_sense_len)(void);
78	int (*is_state_remove)(struct se_cmd *);
79	/*
80	 * fabric module calls for target_core_fabric_configfs.c
81	 */
82	struct se_wwn *(*fabric_make_wwn)(struct target_fabric_configfs *,
83				struct config_group *, const char *);
84	void (*fabric_drop_wwn)(struct se_wwn *);
85	struct se_portal_group *(*fabric_make_tpg)(struct se_wwn *,
86				struct config_group *, const char *);
87	void (*fabric_drop_tpg)(struct se_portal_group *);
88	int (*fabric_post_link)(struct se_portal_group *,
89				struct se_lun *);
90	void (*fabric_pre_unlink)(struct se_portal_group *,
91				struct se_lun *);
92	struct se_tpg_np *(*fabric_make_np)(struct se_portal_group *,
93				struct config_group *, const char *);
94	void (*fabric_drop_np)(struct se_tpg_np *);
95	struct se_node_acl *(*fabric_make_nodeacl)(struct se_portal_group *,
96				struct config_group *, const char *);
97	void (*fabric_drop_nodeacl)(struct se_node_acl *);
98};