root/drivers/target/iscsi/iscsi_target_transport.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. iscsit_get_transport
  2. iscsit_put_transport
  3. iscsit_register_transport
  4. iscsit_unregister_transport

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

/* [<][>][^][v][top][bottom][index][help] */