Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 173643
b: refs/heads/master
c: 93e6d5a
h: refs/heads/master
i:
  173641: bc2a2da
  173639: 0c83cdc
v: v3
  • Loading branch information
Robert Love authored and James Bottomley committed Dec 4, 2009
1 parent 01fb0a3 commit 7856af6
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 41 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8866a5d9075b7129194576f5f810e85a693c40ba
refs/heads/master: 93e6d5ab9969a9200752658677eafd96772302f0
63 changes: 23 additions & 40 deletions trunk/drivers/scsi/libfc/fc_fcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -2104,42 +2126,3 @@ int fc_fcp_init(struct fc_lport *lp)
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);
39 changes: 39 additions & 0 deletions trunk/drivers/scsi/libfc/fc_libfc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
2 changes: 2 additions & 0 deletions trunk/drivers/scsi/libfc/fc_libfc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 7856af6

Please sign in to comment.