[SCSI] libfc: Move libfc_init and libfc_exit to fc_libfc.c
authorRobert Love <robert.w.love@intel.com>
Tue, 3 Nov 2009 19:46:03 +0000 (11:46 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Fri, 4 Dec 2009 18:00:55 +0000 (12:00 -0600)
These routines are for the libfc kernel module and should be in
the libfc .c file.

Moving the libfc __init routine into fc_libfc.c caused the creation
of the fc_setup_fcp() and fc_destroy_fcp() routines so that
scsi_pkt_cachep was not exposed outside of fc_fcp.c.

Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/libfc/fc_fcp.c
drivers/scsi/libfc/fc_libfc.c
drivers/scsi/libfc/fc_libfc.h

index 8a31ced98bd0efda83c076e18315f191a5bc747f..866f78ac4ec278e8e28815cc2fc5643fdf763979 100644 (file)
@@ -41,7 +41,7 @@
 
 #include "fc_libfc.h"
 
-static struct kmem_cache *scsi_pkt_cachep;
+struct kmem_cache *scsi_pkt_cachep;
 
 /* SRB state definitions */
 #define FC_SRB_FREE            0               /* cmd is free */
@@ -2072,6 +2072,28 @@ void fc_fcp_destroy(struct fc_lport *lp)
 }
 EXPORT_SYMBOL(fc_fcp_destroy);
 
+int fc_setup_fcp()
+{
+       int rc = 0;
+
+       scsi_pkt_cachep = kmem_cache_create("libfc_fcp_pkt",
+                                           sizeof(struct fc_fcp_pkt),
+                                           0, SLAB_HWCACHE_ALIGN, NULL);
+       if (!scsi_pkt_cachep) {
+               printk(KERN_ERR "libfc: Unable to allocate SRB cache, "
+                      "module load failed!");
+               rc = -ENOMEM;
+       }
+
+       return rc;
+}
+
+void fc_destroy_fcp()
+{
+       if (scsi_pkt_cachep)
+               kmem_cache_destroy(scsi_pkt_cachep);
+}
+
 int fc_fcp_init(struct fc_lport *lp)
 {
        int rc;
@@ -2104,42 +2126,3 @@ free_internal:
        return rc;
 }
 EXPORT_SYMBOL(fc_fcp_init);
-
-static int __init libfc_init(void)
-{
-       int rc;
-
-       scsi_pkt_cachep = kmem_cache_create("libfc_fcp_pkt",
-                                           sizeof(struct fc_fcp_pkt),
-                                           0, SLAB_HWCACHE_ALIGN, NULL);
-       if (scsi_pkt_cachep == NULL) {
-               printk(KERN_ERR "libfc: Unable to allocate SRB cache, "
-                      "module load failed!");
-               return -ENOMEM;
-       }
-
-       rc = fc_setup_exch_mgr();
-       if (rc)
-               goto destroy_pkt_cache;
-
-       rc = fc_setup_rport();
-       if (rc)
-               goto destroy_em;
-
-       return rc;
-destroy_em:
-       fc_destroy_exch_mgr();
-destroy_pkt_cache:
-       kmem_cache_destroy(scsi_pkt_cachep);
-       return rc;
-}
-
-static void __exit libfc_exit(void)
-{
-       kmem_cache_destroy(scsi_pkt_cachep);
-       fc_destroy_exch_mgr();
-       fc_destroy_rport();
-}
-
-module_init(libfc_init);
-module_exit(libfc_exit);
index e64ea870a4c8bc874058dd06c41b8d9acee1dbb4..01418ae8cb849eca4c75fa3e5937afc008a5d50e 100644 (file)
@@ -33,3 +33,42 @@ MODULE_LICENSE("GPL v2");
 unsigned int fc_debug_logging;
 module_param_named(debug_logging, fc_debug_logging, int, S_IRUGO|S_IWUSR);
 MODULE_PARM_DESC(debug_logging, "a bit mask of logging levels");
+
+/**
+ * libfc_init() - Initialize libfc.ko
+ */
+static int __init libfc_init(void)
+{
+       int rc = 0;
+
+       rc = fc_setup_fcp();
+       if (rc)
+               return rc;
+
+       rc = fc_setup_exch_mgr();
+       if (rc)
+               goto destroy_pkt_cache;
+
+       rc = fc_setup_rport();
+       if (rc)
+               goto destroy_em;
+
+       return rc;
+destroy_em:
+       fc_destroy_exch_mgr();
+destroy_pkt_cache:
+       fc_destroy_fcp();
+       return rc;
+}
+module_init(libfc_init);
+
+/**
+ * libfc_exit() - Tear down libfc.ko
+ */
+static void __exit libfc_exit(void)
+{
+       fc_destroy_fcp();
+       fc_destroy_exch_mgr();
+       fc_destroy_rport();
+}
+module_exit(libfc_exit);
index 388fae4364af356474bed818ba8fea22f807fecf..0530149ac1749854f1188b1391ba46a2016727a0 100644 (file)
@@ -93,6 +93,8 @@ int fc_setup_exch_mgr(void);
 void fc_destroy_exch_mgr(void);
 int fc_setup_rport(void);
 void fc_destroy_rport(void);
+int fc_setup_fcp(void);
+void fc_destroy_fcp(void);
 
 /*
  * Internal libfc functions