mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-14 08:13:56 +08:00
rpcrdma: Merge svcrdma and xprtrdma modules into one
Bi-directional RPC support means code in svcrdma.ko invokes a bit of
code in xprtrdma.ko, and vice versa. To avoid loader/linker loops,
merge the server and client side modules together into a single
module.
When backchannel capabilities are added, the combined module will
register all needed transport capabilities so that Upper Layer
consumers automatically have everything needed to create a
bi-directional transport connection.
Module aliases are added for backwards compatibility with user
space, which still may expect svcrdma.ko or xprtrdma.ko to be
present.
This commit reverts commit 2e8c12e1b7
("xprtrdma: add separate
Kconfig options for NFSoRDMA client and server support") and
provides a single CONFIG option for enabling the new module.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
0380a3f375
commit
ffe1f0df58
@ -48,28 +48,16 @@ config SUNRPC_DEBUG
|
|||||||
|
|
||||||
If unsure, say Y.
|
If unsure, say Y.
|
||||||
|
|
||||||
config SUNRPC_XPRT_RDMA_CLIENT
|
config SUNRPC_XPRT_RDMA
|
||||||
tristate "RPC over RDMA Client Support"
|
tristate "RPC-over-RDMA transport"
|
||||||
depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS
|
depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS
|
||||||
default SUNRPC && INFINIBAND
|
default SUNRPC && INFINIBAND
|
||||||
help
|
help
|
||||||
This option allows the NFS client to support an RDMA-enabled
|
This option allows the NFS client and server to use RDMA
|
||||||
transport.
|
transports (InfiniBand, iWARP, or RoCE).
|
||||||
|
|
||||||
To compile RPC client RDMA transport support as a module,
|
To compile this support as a module, choose M. The module
|
||||||
choose M here: the module will be called xprtrdma.
|
will be called rpcrdma.ko.
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, or you know there is no RDMA capability on your
|
||||||
|
hardware platform, say N.
|
||||||
config SUNRPC_XPRT_RDMA_SERVER
|
|
||||||
tristate "RPC over RDMA Server Support"
|
|
||||||
depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS
|
|
||||||
default SUNRPC && INFINIBAND
|
|
||||||
help
|
|
||||||
This option allows the NFS server to support an RDMA-enabled
|
|
||||||
transport.
|
|
||||||
|
|
||||||
To compile RPC server RDMA transport support as a module,
|
|
||||||
choose M here: the module will be called svcrdma.
|
|
||||||
|
|
||||||
If unsure, say N.
|
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
|
|
||||||
obj-$(CONFIG_SUNRPC) += sunrpc.o
|
obj-$(CONFIG_SUNRPC) += sunrpc.o
|
||||||
obj-$(CONFIG_SUNRPC_GSS) += auth_gss/
|
obj-$(CONFIG_SUNRPC_GSS) += auth_gss/
|
||||||
|
obj-$(CONFIG_SUNRPC_XPRT_RDMA) += xprtrdma/
|
||||||
obj-y += xprtrdma/
|
|
||||||
|
|
||||||
sunrpc-y := clnt.o xprt.o socklib.o xprtsock.o sched.o \
|
sunrpc-y := clnt.o xprt.o socklib.o xprtsock.o sched.o \
|
||||||
auth.o auth_null.o auth_unix.o auth_generic.o \
|
auth.o auth_null.o auth_unix.o auth_generic.o \
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
obj-$(CONFIG_SUNRPC_XPRT_RDMA_CLIENT) += xprtrdma.o
|
obj-$(CONFIG_SUNRPC_XPRT_RDMA) += rpcrdma.o
|
||||||
|
|
||||||
xprtrdma-y := transport.o rpc_rdma.o verbs.o \
|
rpcrdma-y := transport.o rpc_rdma.o verbs.o \
|
||||||
fmr_ops.o frwr_ops.o physical_ops.o
|
fmr_ops.o frwr_ops.o physical_ops.o \
|
||||||
|
svc_rdma.o svc_rdma_transport.o \
|
||||||
obj-$(CONFIG_SUNRPC_XPRT_RDMA_SERVER) += svcrdma.o
|
svc_rdma_marshal.o svc_rdma_sendto.o svc_rdma_recvfrom.o \
|
||||||
|
module.o
|
||||||
svcrdma-y := svc_rdma.o svc_rdma_transport.o \
|
|
||||||
svc_rdma_marshal.o svc_rdma_sendto.o svc_rdma_recvfrom.o
|
|
||||||
|
46
net/sunrpc/xprtrdma/module.c
Normal file
46
net/sunrpc/xprtrdma/module.c
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2015 Oracle. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* rpcrdma.ko module initialization
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/sunrpc/svc_rdma.h>
|
||||||
|
#include "xprt_rdma.h"
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
|
||||||
|
# define RPCDBG_FACILITY RPCDBG_TRANS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
MODULE_AUTHOR("Open Grid Computing and Network Appliance, Inc.");
|
||||||
|
MODULE_DESCRIPTION("RPC/RDMA Transport");
|
||||||
|
MODULE_LICENSE("Dual BSD/GPL");
|
||||||
|
MODULE_ALIAS("svcrdma");
|
||||||
|
MODULE_ALIAS("xprtrdma");
|
||||||
|
|
||||||
|
static void __exit rpc_rdma_cleanup(void)
|
||||||
|
{
|
||||||
|
xprt_rdma_cleanup();
|
||||||
|
svc_rdma_cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init rpc_rdma_init(void)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
rc = svc_rdma_init();
|
||||||
|
if (rc)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
rc = xprt_rdma_init();
|
||||||
|
if (rc)
|
||||||
|
svc_rdma_cleanup();
|
||||||
|
|
||||||
|
out:
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(rpc_rdma_init);
|
||||||
|
module_exit(rpc_rdma_cleanup);
|
@ -38,8 +38,7 @@
|
|||||||
*
|
*
|
||||||
* Author: Tom Tucker <tom@opengridcomputing.com>
|
* Author: Tom Tucker <tom@opengridcomputing.com>
|
||||||
*/
|
*/
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/sysctl.h>
|
#include <linux/sysctl.h>
|
||||||
@ -295,8 +294,3 @@ int svc_rdma_init(void)
|
|||||||
destroy_workqueue(svc_rdma_wq);
|
destroy_workqueue(svc_rdma_wq);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
MODULE_AUTHOR("Tom Tucker <tom@opengridcomputing.com>");
|
|
||||||
MODULE_DESCRIPTION("SVC RDMA Transport");
|
|
||||||
MODULE_LICENSE("Dual BSD/GPL");
|
|
||||||
module_init(svc_rdma_init);
|
|
||||||
module_exit(svc_rdma_cleanup);
|
|
||||||
|
@ -48,7 +48,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/sunrpc/addr.h>
|
#include <linux/sunrpc/addr.h>
|
||||||
@ -59,11 +58,6 @@
|
|||||||
# define RPCDBG_FACILITY RPCDBG_TRANS
|
# define RPCDBG_FACILITY RPCDBG_TRANS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MODULE_LICENSE("Dual BSD/GPL");
|
|
||||||
|
|
||||||
MODULE_DESCRIPTION("RPC/RDMA Transport for Linux kernel NFS");
|
|
||||||
MODULE_AUTHOR("Network Appliance, Inc.");
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* tunables
|
* tunables
|
||||||
*/
|
*/
|
||||||
@ -711,7 +705,7 @@ static struct xprt_class xprt_rdma = {
|
|||||||
.setup = xprt_setup_rdma,
|
.setup = xprt_setup_rdma,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __exit xprt_rdma_cleanup(void)
|
void xprt_rdma_cleanup(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -728,7 +722,7 @@ static void __exit xprt_rdma_cleanup(void)
|
|||||||
__func__, rc);
|
__func__, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init xprt_rdma_init(void)
|
int xprt_rdma_init(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
@ -753,6 +747,3 @@ static int __init xprt_rdma_init(void)
|
|||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(xprt_rdma_init);
|
|
||||||
module_exit(xprt_rdma_cleanup);
|
|
||||||
|
@ -480,6 +480,11 @@ void rpcrdma_reply_handler(struct rpcrdma_rep *);
|
|||||||
*/
|
*/
|
||||||
int rpcrdma_marshal_req(struct rpc_rqst *);
|
int rpcrdma_marshal_req(struct rpc_rqst *);
|
||||||
|
|
||||||
|
/* RPC/RDMA module init - xprtrdma/transport.c
|
||||||
|
*/
|
||||||
|
int xprt_rdma_init(void);
|
||||||
|
void xprt_rdma_cleanup(void);
|
||||||
|
|
||||||
/* Temporary NFS request map cache. Created in svc_rdma.c */
|
/* Temporary NFS request map cache. Created in svc_rdma.c */
|
||||||
extern struct kmem_cache *svc_rdma_map_cachep;
|
extern struct kmem_cache *svc_rdma_map_cachep;
|
||||||
/* WR context cache. Created in svc_rdma.c */
|
/* WR context cache. Created in svc_rdma.c */
|
||||||
|
Loading…
Reference in New Issue
Block a user