Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
target
target_core_fabric.h
Go to the documentation of this file.
1
#ifndef TARGET_CORE_FABRIC_H
2
#define TARGET_CORE_FABRIC_H
3
4
struct
target_core_fabric_ops
{
5
struct
configfs_subsystem
*
tf_subsys
;
6
char
*(*get_fabric_name)(
void
);
7
u8
(*
get_fabric_proto_ident
)(
struct
se_portal_group
*);
8
char
*(*tpg_get_wwn)(
struct
se_portal_group
*);
9
u16
(*
tpg_get_tag
)(
struct
se_portal_group
*);
10
u32
(*
tpg_get_default_depth
)(
struct
se_portal_group
*);
11
u32
(*
tpg_get_pr_transport_id
)(
struct
se_portal_group
*,
12
struct
se_node_acl
*,
13
struct
t10_pr_registration
*,
int
*,
14
unsigned
char
*);
15
u32
(*
tpg_get_pr_transport_id_len
)(
struct
se_portal_group
*,
16
struct
se_node_acl
*,
17
struct
t10_pr_registration
*,
int
*);
18
char
*(*tpg_parse_pr_out_transport_id)(
struct
se_portal_group
*,
19
const
char
*,
u32
*,
char
**);
20
int
(*
tpg_check_demo_mode
)(
struct
se_portal_group
*);
21
int
(*
tpg_check_demo_mode_cache
)(
struct
se_portal_group
*);
22
int
(*
tpg_check_demo_mode_write_protect
)(
struct
se_portal_group
*);
23
int
(*
tpg_check_prod_mode_write_protect
)(
struct
se_portal_group
*);
24
/*
25
* Optionally used by fabrics to allow demo-mode login, but not
26
* expose any TPG LUNs, and return 'not connected' in standard
27
* inquiry response
28
*/
29
int
(*
tpg_check_demo_mode_login_only
)(
struct
se_portal_group
*);
30
struct
se_node_acl
*(*tpg_alloc_fabric_acl)(
31
struct
se_portal_group
*);
32
void
(*
tpg_release_fabric_acl
)(
struct
se_portal_group
*,
33
struct
se_node_acl
*);
34
u32
(*
tpg_get_inst_index
)(
struct
se_portal_group
*);
35
/*
36
* Optional to release struct se_cmd and fabric dependent allocated
37
* I/O descriptor in transport_cmd_check_stop().
38
*
39
* Returning 1 will signal a descriptor has been released.
40
* Returning 0 will signal a descriptor has not been released.
41
*/
42
int
(*
check_stop_free
)(
struct
se_cmd
*);
43
void
(*
release_cmd
)(
struct
se_cmd
*);
44
void
(*
put_session
)(
struct
se_session
*);
45
/*
46
* Called with spin_lock_bh(struct se_portal_group->session_lock held.
47
*/
48
int
(*
shutdown_session
)(
struct
se_session
*);
49
void
(*
close_session
)(
struct
se_session
*);
50
u32
(*
sess_get_index
)(
struct
se_session
*);
51
/*
52
* Used only for SCSI fabrics that contain multi-value TransportIDs
53
* (like iSCSI). All other SCSI fabrics should set this to NULL.
54
*/
55
u32
(*
sess_get_initiator_sid
)(
struct
se_session
*,
56
unsigned
char
*,
u32
);
57
int
(*
write_pending
)(
struct
se_cmd
*);
58
int
(*
write_pending_status
)(
struct
se_cmd
*);
59
void
(*
set_default_node_attributes
)(
struct
se_node_acl
*);
60
u32
(*
get_task_tag
)(
struct
se_cmd
*);
61
int
(*
get_cmd_state
)(
struct
se_cmd
*);
62
int
(*
queue_data_in
)(
struct
se_cmd
*);
63
int
(*
queue_status
)(
struct
se_cmd
*);
64
int
(*
queue_tm_rsp
)(
struct
se_cmd
*);
65
/*
66
* fabric module calls for target_core_fabric_configfs.c
67
*/
68
struct
se_wwn
*(*fabric_make_wwn)(
struct
target_fabric_configfs
*,
69
struct
config_group
*,
const
char
*);
70
void
(*
fabric_drop_wwn
)(
struct
se_wwn
*);
71
struct
se_portal_group
*(*fabric_make_tpg)(
struct
se_wwn
*,
72
struct
config_group
*,
const
char
*);
73
void
(*
fabric_drop_tpg
)(
struct
se_portal_group
*);
74
int
(*
fabric_post_link
)(
struct
se_portal_group
*,
75
struct
se_lun
*);
76
void
(*
fabric_pre_unlink
)(
struct
se_portal_group
*,
77
struct
se_lun
*);
78
struct
se_tpg_np
*(*fabric_make_np)(
struct
se_portal_group
*,
79
struct
config_group
*,
const
char
*);
80
void
(*
fabric_drop_np
)(
struct
se_tpg_np
*);
81
struct
se_node_acl
*(*fabric_make_nodeacl)(
struct
se_portal_group
*,
82
struct
config_group
*,
const
char
*);
83
void
(*
fabric_drop_nodeacl
)(
struct
se_node_acl
*);
84
};
85
86
struct
se_session
*
transport_init_session
(
void
);
87
void
__transport_register_session
(
struct
se_portal_group
*,
88
struct
se_node_acl
*,
struct
se_session
*,
void
*);
89
void
transport_register_session
(
struct
se_portal_group
*,
90
struct
se_node_acl
*,
struct
se_session
*,
void
*);
91
void
target_get_session
(
struct
se_session
*);
92
void
target_put_session
(
struct
se_session
*);
93
void
transport_free_session
(
struct
se_session
*);
94
void
target_put_nacl
(
struct
se_node_acl
*);
95
void
transport_deregister_session_configfs
(
struct
se_session
*);
96
void
transport_deregister_session
(
struct
se_session
*);
97
98
99
void
transport_init_se_cmd
(
struct
se_cmd
*,
struct
target_core_fabric_ops
*,
100
struct
se_session
*,
u32
,
int
,
int
,
unsigned
char
*);
101
int
transport_lookup_cmd_lun
(
struct
se_cmd
*,
u32
);
102
int
target_setup_cmd_from_cdb
(
struct
se_cmd
*,
unsigned
char
*);
103
int
target_submit_cmd_map_sgls
(
struct
se_cmd
*,
struct
se_session
*,
104
unsigned
char
*,
unsigned
char
*,
u32
,
u32
,
int
,
int
,
int
,
105
struct
scatterlist
*,
u32
,
struct
scatterlist
*,
u32
);
106
int
target_submit_cmd
(
struct
se_cmd
*,
struct
se_session
*,
unsigned
char
*,
107
unsigned
char
*,
u32
,
u32
,
int
,
int
,
int
);
108
int
target_submit_tmr
(
struct
se_cmd
*
se_cmd
,
struct
se_session
*se_sess,
109
unsigned
char
*
sense
,
u32
unpacked_lun,
110
void
*fabric_tmr_ptr,
unsigned
char
tm_type,
111
gfp_t
,
unsigned
int
,
int
);
112
int
transport_handle_cdb_direct
(
struct
se_cmd
*);
113
int
transport_generic_map_mem_to_cmd
(
struct
se_cmd
*
cmd
,
114
struct
scatterlist
*,
u32
,
struct
scatterlist
*,
u32
);
115
int
transport_generic_new_cmd
(
struct
se_cmd
*);
116
117
void
target_execute_cmd
(
struct
se_cmd
*
cmd
);
118
119
void
transport_generic_free_cmd
(
struct
se_cmd
*,
int
);
120
121
bool
transport_wait_for_tasks
(
struct
se_cmd
*);
122
int
transport_check_aborted_status
(
struct
se_cmd
*,
int
);
123
int
transport_send_check_condition_and_sense
(
struct
se_cmd
*,
u8
,
int
);
124
125
int
target_put_sess_cmd
(
struct
se_session
*,
struct
se_cmd
*);
126
void
target_sess_cmd_list_set_waiting
(
struct
se_session
*);
127
void
target_wait_for_sess_cmds
(
struct
se_session
*,
int
);
128
129
int
core_alua_check_nonop_delay
(
struct
se_cmd
*);
130
131
int
core_tmr_alloc_req
(
struct
se_cmd
*,
void
*,
u8
,
gfp_t
);
132
void
core_tmr_release_req
(
struct
se_tmr_req
*);
133
int
transport_generic_handle_tmr
(
struct
se_cmd
*);
134
void
transport_generic_request_failure
(
struct
se_cmd
*);
135
int
transport_lookup_tmr_lun
(
struct
se_cmd
*,
u32
);
136
137
struct
se_node_acl
*
core_tpg_check_initiator_node_acl
(
struct
se_portal_group
*,
138
unsigned
char
*);
139
void
core_tpg_clear_object_luns
(
struct
se_portal_group
*);
140
struct
se_node_acl
*
core_tpg_add_initiator_node_acl
(
struct
se_portal_group
*,
141
struct
se_node_acl
*,
const
char
*,
u32
);
142
int
core_tpg_del_initiator_node_acl
(
struct
se_portal_group
*,
143
struct
se_node_acl
*,
int
);
144
int
core_tpg_set_initiator_node_queue_depth
(
struct
se_portal_group
*,
145
unsigned
char
*,
u32
,
int
);
146
int
core_tpg_register
(
struct
target_core_fabric_ops
*,
struct
se_wwn
*,
147
struct
se_portal_group
*,
void
*,
int
);
148
int
core_tpg_deregister
(
struct
se_portal_group
*);
149
150
/* SAS helpers */
151
u8
sas_get_fabric_proto_ident
(
struct
se_portal_group
*);
152
u32
sas_get_pr_transport_id
(
struct
se_portal_group
*,
struct
se_node_acl
*,
153
struct
t10_pr_registration
*,
int
*,
unsigned
char
*);
154
u32
sas_get_pr_transport_id_len
(
struct
se_portal_group
*,
struct
se_node_acl
*,
155
struct
t10_pr_registration
*,
int
*);
156
char
*
sas_parse_pr_out_transport_id
(
struct
se_portal_group
*,
const
char
*,
157
u32
*,
char
**);
158
159
/* FC helpers */
160
u8
fc_get_fabric_proto_ident
(
struct
se_portal_group
*);
161
u32
fc_get_pr_transport_id
(
struct
se_portal_group
*,
struct
se_node_acl
*,
162
struct
t10_pr_registration
*,
int
*,
unsigned
char
*);
163
u32
fc_get_pr_transport_id_len
(
struct
se_portal_group
*,
struct
se_node_acl
*,
164
struct
t10_pr_registration
*,
int
*);
165
char
*
fc_parse_pr_out_transport_id
(
struct
se_portal_group
*,
const
char
*,
166
u32
*,
char
**);
167
168
/* iSCSI helpers */
169
u8
iscsi_get_fabric_proto_ident
(
struct
se_portal_group
*);
170
u32
iscsi_get_pr_transport_id
(
struct
se_portal_group
*,
struct
se_node_acl
*,
171
struct
t10_pr_registration
*,
int
*,
unsigned
char
*);
172
u32
iscsi_get_pr_transport_id_len
(
struct
se_portal_group
*,
struct
se_node_acl
*,
173
struct
t10_pr_registration
*,
int
*);
174
char
*
iscsi_parse_pr_out_transport_id
(
struct
se_portal_group
*,
const
char
*,
175
u32
*,
char
**);
176
177
#endif
/* TARGET_CORE_FABRICH */
Generated on Thu Jan 10 2013 14:53:42 for Linux Kernel by
1.8.2