diff options
author | NeilBrown <neilb@suse.de> | 2014-03-08 10:40:07 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2014-03-11 12:03:05 -0400 |
commit | e54de2940d020e6ac53a5840b6e427bac986ca62 (patch) | |
tree | 43065d3e0e07b8827def2d1193235638aaf0dad2 /utils/nfsd/nfsd.c | |
parent | 5be4b2d7786d3eaee9e11c3bc4cdbfa451006947 (diff) | |
download | nfs-utils-e54de2940d020e6ac53a5840b6e427bac986ca62.tar.gz nfs-utils-e54de2940d020e6ac53a5840b6e427bac986ca62.tar.xz nfs-utils-e54de2940d020e6ac53a5840b6e427bac986ca62.zip |
nfsd: add -r and --rdma options to request rdma service
As nfsd establishes UDP and TCP ports, it should establish RDMA too.
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils/nfsd/nfsd.c')
-rw-r--r-- | utils/nfsd/nfsd.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/utils/nfsd/nfsd.c b/utils/nfsd/nfsd.c index edeb621..d6a413d 100644 --- a/utils/nfsd/nfsd.c +++ b/utils/nfsd/nfsd.c @@ -45,6 +45,7 @@ static struct option longopts[] = { "port", 1, 0, 'p' }, { "debug", 0, 0, 'd' }, { "syslog", 0, 0, 's' }, + { "rdma", 2, 0, 'R' }, { NULL, 0, 0, 0 } }; @@ -96,7 +97,7 @@ int main(int argc, char **argv) { int count = NFSD_NPROC, c, error = 0, portnum = 0, fd, found_one; - char *p, *progname, *port; + char *p, *progname, *port, *rdma_port = NULL; char *haddr = NULL; int socket_up = 0; unsigned int minorvers = 0; @@ -121,7 +122,7 @@ main(int argc, char **argv) xlog_syslog(0); xlog_stderr(1); - while ((c = getopt_long(argc, argv, "dH:hN:V:p:P:sTU", longopts, NULL)) != EOF) { + while ((c = getopt_long(argc, argv, "dH:hN:V:p:P:sTUr", longopts, NULL)) != EOF) { switch(c) { case 'd': xlog_config(D_ALL, 1); @@ -156,6 +157,16 @@ main(int argc, char **argv) exit(1); } break; + case 'r': + rdma_port = "nfsrdma"; + break; + case 'R': /* --rdma */ + if (optarg) + rdma_port = optarg; + else + rdma_port = "nfsrdma"; + break; + case 'N': switch((c = strtol(optarg, &p, 0))) { case 4: @@ -296,7 +307,11 @@ main(int argc, char **argv) if (!error) socket_up = 1; #endif /* IPV6_SUPPORTED */ - + if (rdma_port) { + error = nfssvc_set_rdmaport(rdma_port); + if (!error) + socket_up = 1; + } set_threads: /* don't start any threads if unable to hand off any sockets */ if (!socket_up) { @@ -337,7 +352,7 @@ static void usage(const char *prog) { fprintf(stderr, "Usage:\n" - "%s [-d|--debug] [-H hostname] [-p|-P|--port port] [-N|--no-nfs-version version] [-V|--nfs-version version] [-s|--syslog] [-T|--no-tcp] [-U|--no-udp] nrservs\n", + "%s [-d|--debug] [-H hostname] [-p|-P|--port port] [-N|--no-nfs-version version] [-V|--nfs-version version] [-s|--syslog] [-T|--no-tcp] [-U|--no-udp] [-r|--rdma=] nrservs\n", prog); exit(2); } |