int svc_rdma_init(void) { dprintk("SVCRDMA Module Init, register RPC RDMA transport\n"); dprintk("\tsvcrdma_ord : %d\n", svcrdma_ord); dprintk("\tmax_requests : %d\n", svcrdma_max_requests); dprintk("\tsq_depth : %d\n", svcrdma_max_requests * RPCRDMA_SQ_DEPTH_MULT); dprintk("\tmax_inline : %d\n", svcrdma_max_req_size); svc_rdma_wq = alloc_workqueue("svc_rdma", 0, 0); if (!svc_rdma_wq) return -ENOMEM; if (!svcrdma_table_header) svcrdma_table_header = register_sysctl_table(svcrdma_root_table); /* Create the temporary map cache */ svc_rdma_map_cachep = kmem_cache_create("svc_rdma_map_cache", sizeof(struct svc_rdma_req_map), 0, SLAB_HWCACHE_ALIGN, NULL); if (!svc_rdma_map_cachep) { printk(KERN_INFO "Could not allocate map cache.\n"); 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 */ svc_reg_xprt_class(&svc_rdma_class); #if defined(CONFIG_SUNRPC_BACKCHANNEL) svc_reg_xprt_class(&svc_rdma_bc_class); #endif return 0; err1: kmem_cache_destroy(svc_rdma_map_cachep); err0: unregister_sysctl_table(svcrdma_table_header); destroy_workqueue(svc_rdma_wq); return -ENOMEM; }
int svc_rdma_init(void) { dprintk("SVCRDMA Module Init, register RPC RDMA transport\n"); dprintk("\tsvcrdma_ord : %d\n", svcrdma_ord); dprintk("\tmax_requests : %d\n", svcrdma_max_requests); dprintk("\tsq_depth : %d\n", svcrdma_max_requests * RPCRDMA_SQ_DEPTH_MULT); dprintk("\tmax_inline : %d\n", svcrdma_max_req_size); if (!svcrdma_table_header) svcrdma_table_header = register_sysctl_table(svcrdma_root_table); /* Register RDMA with the SVC transport switch */ svc_reg_xprt_class(&svc_rdma_class); return 0; }
int svc_rdma_init(void) { dprintk("SVCRDMA Module Init, register RPC RDMA transport\n"); dprintk("\tsvcrdma_ord : %d\n", svcrdma_ord); dprintk("\tmax_requests : %d\n", svcrdma_max_requests); dprintk("\tsq_depth : %d\n", svcrdma_max_requests * RPCRDMA_SQ_DEPTH_MULT); dprintk("\tmax_inline : %d\n", svcrdma_max_req_size); if (!svcrdma_table_header) svcrdma_table_header = register_sysctl_table(svcrdma_root_table); svc_rdma_map_cachep = kmem_cache_create("svc_rdma_map_cache", sizeof(struct svc_rdma_req_map), 0, SLAB_HWCACHE_ALIGN, NULL); if (!svc_rdma_map_cachep) { printk(KERN_INFO "Could not allocate map cache.\n"); goto err0; } 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; } svc_reg_xprt_class(&svc_rdma_class); return 0; err1: kmem_cache_destroy(svc_rdma_map_cachep); err0: unregister_sysctl_table(svcrdma_table_header); return -ENOMEM; }