NFS: load the rpc/rdma transport module automatically
When mounting an NFS/RDMA server with the "-o proto=rdma" or "-o rdma" options, attempt to dynamically load the necessary "xprtrdma" client transport module. Doing so improves usability, while avoiding a static module dependency and any unnecesary resources. Signed-off-by: Tom Talpey <tmtalpey@gmail.com> Cc: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
441e3e2429
commit
a67d18f89f
|
@ -1018,6 +1018,7 @@ static int nfs_parse_mount_options(char *raw,
|
||||||
case Opt_rdma:
|
case Opt_rdma:
|
||||||
mnt->flags |= NFS_MOUNT_TCP; /* for side protocols */
|
mnt->flags |= NFS_MOUNT_TCP; /* for side protocols */
|
||||||
mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
|
mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
|
||||||
|
xprt_load_transport(p);
|
||||||
break;
|
break;
|
||||||
case Opt_acl:
|
case Opt_acl:
|
||||||
mnt->flags &= ~NFS_MOUNT_NOACL;
|
mnt->flags &= ~NFS_MOUNT_NOACL;
|
||||||
|
@ -1205,12 +1206,14 @@ static int nfs_parse_mount_options(char *raw,
|
||||||
/* vector side protocols to TCP */
|
/* vector side protocols to TCP */
|
||||||
mnt->flags |= NFS_MOUNT_TCP;
|
mnt->flags |= NFS_MOUNT_TCP;
|
||||||
mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
|
mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA;
|
||||||
|
xprt_load_transport(string);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
errors++;
|
errors++;
|
||||||
dfprintk(MOUNT, "NFS: unrecognized "
|
dfprintk(MOUNT, "NFS: unrecognized "
|
||||||
"transport protocol\n");
|
"transport protocol\n");
|
||||||
}
|
}
|
||||||
|
kfree(string);
|
||||||
break;
|
break;
|
||||||
case Opt_mountproto:
|
case Opt_mountproto:
|
||||||
string = match_strdup(args);
|
string = match_strdup(args);
|
||||||
|
@ -1218,7 +1221,6 @@ static int nfs_parse_mount_options(char *raw,
|
||||||
goto out_nomem;
|
goto out_nomem;
|
||||||
token = match_token(string,
|
token = match_token(string,
|
||||||
nfs_xprt_protocol_tokens, args);
|
nfs_xprt_protocol_tokens, args);
|
||||||
kfree(string);
|
|
||||||
|
|
||||||
switch (token) {
|
switch (token) {
|
||||||
case Opt_xprt_udp:
|
case Opt_xprt_udp:
|
||||||
|
|
Loading…
Reference in a new issue