svcrdma: Create a kmem cache for the WR contexts
Create a kmem cache to hold WR contexts. Next we will convert the WR context get and put services to use this kmem cache. Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
This commit is contained in:
parent
902a94e088
commit
bf5927d84e
1 changed files with 19 additions and 4 deletions
|
@ -69,8 +69,9 @@ atomic_t rdma_stat_rq_prod;
|
||||||
atomic_t rdma_stat_sq_poll;
|
atomic_t rdma_stat_sq_poll;
|
||||||
atomic_t rdma_stat_sq_prod;
|
atomic_t rdma_stat_sq_prod;
|
||||||
|
|
||||||
/* Temporary NFS request map cache */
|
/* Temporary NFS request map and context caches */
|
||||||
struct kmem_cache *svc_rdma_map_cachep;
|
struct kmem_cache *svc_rdma_map_cachep;
|
||||||
|
struct kmem_cache *svc_rdma_ctxt_cachep;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function implements reading and resetting an atomic_t stat
|
* This function implements reading and resetting an atomic_t stat
|
||||||
|
@ -246,6 +247,7 @@ void svc_rdma_cleanup(void)
|
||||||
}
|
}
|
||||||
svc_unreg_xprt_class(&svc_rdma_class);
|
svc_unreg_xprt_class(&svc_rdma_class);
|
||||||
kmem_cache_destroy(svc_rdma_map_cachep);
|
kmem_cache_destroy(svc_rdma_map_cachep);
|
||||||
|
kmem_cache_destroy(svc_rdma_ctxt_cachep);
|
||||||
}
|
}
|
||||||
|
|
||||||
int svc_rdma_init(void)
|
int svc_rdma_init(void)
|
||||||
|
@ -268,14 +270,27 @@ int svc_rdma_init(void)
|
||||||
NULL);
|
NULL);
|
||||||
if (!svc_rdma_map_cachep) {
|
if (!svc_rdma_map_cachep) {
|
||||||
printk(KERN_INFO "Could not allocate map cache.\n");
|
printk(KERN_INFO "Could not allocate map cache.\n");
|
||||||
goto err;
|
goto err0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create the temporary context cache */
|
||||||
|
svc_rdma_ctxt_cachep =
|
||||||
|
kmem_cache_create("svc_rdma_ctxt_cache",
|
||||||
|
sizeof(struct svc_rdma_op_ctxt),
|
||||||
|
0,
|
||||||
|
SLAB_HWCACHE_ALIGN,
|
||||||
|
NULL);
|
||||||
|
if (!svc_rdma_ctxt_cachep) {
|
||||||
|
printk(KERN_INFO "Could not allocate WR ctxt cache.\n");
|
||||||
|
goto err1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Register RDMA with the SVC transport switch */
|
/* Register RDMA with the SVC transport switch */
|
||||||
svc_reg_xprt_class(&svc_rdma_class);
|
svc_reg_xprt_class(&svc_rdma_class);
|
||||||
return 0;
|
return 0;
|
||||||
|
err1:
|
||||||
err:
|
kmem_cache_destroy(svc_rdma_map_cachep);
|
||||||
|
err0:
|
||||||
unregister_sysctl_table(svcrdma_table_header);
|
unregister_sysctl_table(svcrdma_table_header);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue