1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-C 1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2 /* 2 /* 3 * Copyright (c) 2015, 2017 Oracle. All right 3 * Copyright (c) 2015, 2017 Oracle. All rights reserved. 4 */ 4 */ 5 5 6 /* rpcrdma.ko module initialization 6 /* rpcrdma.ko module initialization 7 */ 7 */ 8 8 9 #include <linux/types.h> 9 #include <linux/types.h> 10 #include <linux/compiler.h> 10 #include <linux/compiler.h> 11 #include <linux/module.h> 11 #include <linux/module.h> 12 #include <linux/init.h> 12 #include <linux/init.h> 13 #include <linux/sunrpc/svc_rdma.h> 13 #include <linux/sunrpc/svc_rdma.h> 14 #include <linux/sunrpc/rdma_rn.h> << 15 14 16 #include <asm/swab.h> 15 #include <asm/swab.h> 17 16 18 #include "xprt_rdma.h" 17 #include "xprt_rdma.h" 19 18 20 #define CREATE_TRACE_POINTS 19 #define CREATE_TRACE_POINTS 21 #include <trace/events/rpcrdma.h> 20 #include <trace/events/rpcrdma.h> 22 21 23 MODULE_AUTHOR("Open Grid Computing and Network 22 MODULE_AUTHOR("Open Grid Computing and Network Appliance, Inc."); 24 MODULE_DESCRIPTION("RPC/RDMA Transport"); 23 MODULE_DESCRIPTION("RPC/RDMA Transport"); 25 MODULE_LICENSE("Dual BSD/GPL"); 24 MODULE_LICENSE("Dual BSD/GPL"); 26 MODULE_ALIAS("svcrdma"); 25 MODULE_ALIAS("svcrdma"); 27 MODULE_ALIAS("xprtrdma"); 26 MODULE_ALIAS("xprtrdma"); 28 MODULE_ALIAS("rpcrdma6"); 27 MODULE_ALIAS("rpcrdma6"); 29 28 30 static void __exit rpc_rdma_cleanup(void) 29 static void __exit rpc_rdma_cleanup(void) 31 { 30 { 32 xprt_rdma_cleanup(); 31 xprt_rdma_cleanup(); 33 svc_rdma_cleanup(); 32 svc_rdma_cleanup(); 34 rpcrdma_ib_client_unregister(); << 35 } 33 } 36 34 37 static int __init rpc_rdma_init(void) 35 static int __init rpc_rdma_init(void) 38 { 36 { 39 int rc; 37 int rc; 40 38 41 rc = rpcrdma_ib_client_register(); << 42 if (rc) << 43 goto out_rc; << 44 << 45 rc = svc_rdma_init(); 39 rc = svc_rdma_init(); 46 if (rc) 40 if (rc) 47 goto out_ib_client; !! 41 goto out; 48 42 49 rc = xprt_rdma_init(); 43 rc = xprt_rdma_init(); 50 if (rc) 44 if (rc) 51 goto out_svc_rdma; !! 45 svc_rdma_cleanup(); 52 46 53 return 0; !! 47 out: 54 << 55 out_svc_rdma: << 56 svc_rdma_cleanup(); << 57 out_ib_client: << 58 rpcrdma_ib_client_unregister(); << 59 out_rc: << 60 return rc; 48 return rc; 61 } 49 } 62 50 63 module_init(rpc_rdma_init); 51 module_init(rpc_rdma_init); 64 module_exit(rpc_rdma_cleanup); 52 module_exit(rpc_rdma_cleanup); 65 53
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.