xref: /openbmc/linux/drivers/target/iscsi/iscsi_target_transport.c (revision 2c684d89)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <linux/spinlock.h>
2 #include <linux/list.h>
3 #include <target/iscsi/iscsi_transport.h>
4 
5 static LIST_HEAD(g_transport_list);
6 static DEFINE_MUTEX(transport_mutex);
7 
8 struct iscsit_transport *iscsit_get_transport(int type)
9 {
10 	struct iscsit_transport *t;
11 
12 	mutex_lock(&transport_mutex);
13 	list_for_each_entry(t, &g_transport_list, t_node) {
14 		if (t->transport_type == type) {
15 			if (t->owner && !try_module_get(t->owner)) {
16 				t = NULL;
17 			}
18 			mutex_unlock(&transport_mutex);
19 			return t;
20 		}
21 	}
22 	mutex_unlock(&transport_mutex);
23 
24 	return NULL;
25 }
26 
27 void iscsit_put_transport(struct iscsit_transport *t)
28 {
29 	module_put(t->owner);
30 }
31 
32 int iscsit_register_transport(struct iscsit_transport *t)
33 {
34 	INIT_LIST_HEAD(&t->t_node);
35 
36 	mutex_lock(&transport_mutex);
37 	list_add_tail(&t->t_node, &g_transport_list);
38 	mutex_unlock(&transport_mutex);
39 
40 	pr_debug("Registered iSCSI transport: %s\n", t->name);
41 
42 	return 0;
43 }
44 EXPORT_SYMBOL(iscsit_register_transport);
45 
46 void iscsit_unregister_transport(struct iscsit_transport *t)
47 {
48 	mutex_lock(&transport_mutex);
49 	list_del(&t->t_node);
50 	mutex_unlock(&transport_mutex);
51 
52 	pr_debug("Unregistered iSCSI transport: %s\n", t->name);
53 }
54 EXPORT_SYMBOL(iscsit_unregister_transport);
55 

served by {OpenGrok

Last Index Update: Sat May 03 03:01:14 CDT 2025