module.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
  2. /*
  3. * Copyright (c) 2015, 2017 Oracle. All rights reserved.
  4. */
  5. /* rpcrdma.ko module initialization
  6. */
  7. #include <linux/types.h>
  8. #include <linux/compiler.h>
  9. #include <linux/module.h>
  10. #include <linux/init.h>
  11. #include <linux/sunrpc/svc_rdma.h>
  12. #include <linux/sunrpc/rdma_rn.h>
  13. #include <asm/swab.h>
  14. #include "xprt_rdma.h"
  15. #define CREATE_TRACE_POINTS
  16. #include <trace/events/rpcrdma.h>
  17. MODULE_AUTHOR("Open Grid Computing and Network Appliance, Inc.");
  18. MODULE_DESCRIPTION("RPC/RDMA Transport");
  19. MODULE_LICENSE("Dual BSD/GPL");
  20. MODULE_ALIAS("svcrdma");
  21. MODULE_ALIAS("xprtrdma");
  22. MODULE_ALIAS("rpcrdma6");
  23. static void __exit rpc_rdma_cleanup(void)
  24. {
  25. xprt_rdma_cleanup();
  26. svc_rdma_cleanup();
  27. rpcrdma_ib_client_unregister();
  28. }
  29. static int __init rpc_rdma_init(void)
  30. {
  31. int rc;
  32. rc = rpcrdma_ib_client_register();
  33. if (rc)
  34. goto out_rc;
  35. rc = svc_rdma_init();
  36. if (rc)
  37. goto out_ib_client;
  38. rc = xprt_rdma_init();
  39. if (rc)
  40. goto out_svc_rdma;
  41. return 0;
  42. out_svc_rdma:
  43. svc_rdma_cleanup();
  44. out_ib_client:
  45. rpcrdma_ib_client_unregister();
  46. out_rc:
  47. return rc;
  48. }
  49. module_init(rpc_rdma_init);
  50. module_exit(rpc_rdma_cleanup);