[SCSI] libfc: removes initializing fc_cpu_order and fc_cpu_mask per lport
Initializing these libfc globals per lport could mess up exch allocation/free for existing lport. So this patch moves their initialization to fc_setup_exch_mgr so that these globals gets initialized only once for libfc. Reported-by: Alex Lyakas <alexl@mellanox.co.il> Signed-off-by: Vasu Dev <vasu.dev@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
committed by
James Bottomley
parent
22655ac222
commit
89f19a59de
@@ -2046,6 +2046,20 @@ int fc_exch_init(struct fc_lport *lp)
|
|||||||
if (!lp->tt.seq_exch_abort)
|
if (!lp->tt.seq_exch_abort)
|
||||||
lp->tt.seq_exch_abort = fc_seq_exch_abort;
|
lp->tt.seq_exch_abort = fc_seq_exch_abort;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(fc_exch_init);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fc_setup_exch_mgr() - Setup an exchange manager
|
||||||
|
*/
|
||||||
|
int fc_setup_exch_mgr()
|
||||||
|
{
|
||||||
|
fc_em_cachep = kmem_cache_create("libfc_em", sizeof(struct fc_exch),
|
||||||
|
0, SLAB_HWCACHE_ALIGN, NULL);
|
||||||
|
if (!fc_em_cachep)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize fc_cpu_mask and fc_cpu_order. The
|
* Initialize fc_cpu_mask and fc_cpu_order. The
|
||||||
* fc_cpu_mask is set for nr_cpu_ids rounded up
|
* fc_cpu_mask is set for nr_cpu_ids rounded up
|
||||||
@@ -2070,16 +2084,6 @@ int fc_exch_init(struct fc_lport *lp)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(fc_exch_init);
|
|
||||||
|
|
||||||
int fc_setup_exch_mgr(void)
|
|
||||||
{
|
|
||||||
fc_em_cachep = kmem_cache_create("libfc_em", sizeof(struct fc_exch),
|
|
||||||
0, SLAB_HWCACHE_ALIGN, NULL);
|
|
||||||
if (!fc_em_cachep)
|
|
||||||
return -ENOMEM;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fc_destroy_exch_mgr(void)
|
void fc_destroy_exch_mgr(void)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user