diff options
-rw-r--r-- | .SRCINFO | 20 | ||||
-rw-r--r-- | PKGBUILD | 26 | ||||
-rwxr-xr-x | nfs-utils-rdma-server | 45 | ||||
-rw-r--r-- | nfs-utils-rdma-server.conf | 13 | ||||
-rw-r--r-- | nfs-utils-rdma-server.install | 14 | ||||
-rw-r--r-- | nfs-utils-rdma-server.service | 16 |
6 files changed, 134 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..0665d8be4c6b --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,20 @@ +pkgbase = nfs-utils-rdma-server + pkgdesc = Load kernel module for NFS server using RDMA, and configure RDMA port + pkgver = 1.00 + pkgrel = 1 + arch = any + license = GPL2 + depends = rdma + depends = nfs-utils + source = nfs-utils-rdma-server + source = nfs-utils-rdma-server.conf + source = nfs-utils-rdma-server.service + source = nfs-utils-rdma-server.install + md5sums = 573abc0d8a23fe08ed2bfcc696d3f826 + md5sums = 82c54ede9b9ecf21e15a803a10eef82d + md5sums = 91d018727b56223c8381cd8dbac1d2dc + md5sums = d42c8b5ae86e61d3a847a92b1f59a2ae + +pkgname = nfs-utils-rdma-server + install = nfs-utils-rdma-server.install + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..ea6729e37933 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,26 @@ +# Maintainer: James Harvey <jamespharvey20@gmail.com> +# * Namcap warns that dependency rdma and nfs-utils are not needed, but nfs-utils-rdma-server requires IPoIB, and the IPoIB kernel modules are loaded by the rdma package, and requires nfs-utils, or there's no kernel module to load or port to configure. + +pkgname=nfs-utils-rdma-server +pkgver=1.00 +pkgrel=1 +pkgdesc='Load kernel module for NFS server using RDMA, and configure RDMA port' +arch=('any') +license=('GPL2') +depends=('rdma' 'nfs-utils') +source=('nfs-utils-rdma-server' + 'nfs-utils-rdma-server.conf' + 'nfs-utils-rdma-server.service' + 'nfs-utils-rdma-server.install') +md5sums=('573abc0d8a23fe08ed2bfcc696d3f826' + '82c54ede9b9ecf21e15a803a10eef82d' + '91d018727b56223c8381cd8dbac1d2dc' + 'd42c8b5ae86e61d3a847a92b1f59a2ae') + +package() { + install=nfs-utils-rdma-server.install + + install -Dm755 "${srcdir}/nfs-utils-rdma-server" "${pkgdir}/usr/bin/nfs-utils-rdma-server" + install -Dm644 "${srcdir}/nfs-utils-rdma-server.conf" "${pkgdir}/etc/nfs-utils-rdma-server.conf" + install -Dm644 "${srcdir}/nfs-utils-rdma-server.service" "${pkgdir}/etc/systemd/system/nfs-utils-rdma-server.service" +} diff --git a/nfs-utils-rdma-server b/nfs-utils-rdma-server new file mode 100755 index 000000000000..b56e54185466 --- /dev/null +++ b/nfs-utils-rdma-server @@ -0,0 +1,45 @@ +#!/bin/bash +# Written by James Harvey <jamespharvey20@gmail.com> +# Released under GPL2 license +# +# Load kernel module for NFS server using RDMA, and configure RDMA port +# +# This is usually run automatically by systemd, after rdma.service starts +# + +CONFIG=/etc/nfs-utils-rdma-server.conf + +if [[ $EUID -ne 0 ]]; then + echo "nfs-utils-rdma-server must be run as root" 1>&2 + exit 1 +fi + +if ! [ -f $CONFIG ]; then + echo "$CONFIG not found" + exit 2 +fi + +. $CONFIG + +if ! [ -n "${NFS_UTILS_RDMA_SERVER_PORT}" ]; then + echo "You need to fix $CONFIG" + echo "NFS_UTILS_RDMA_SERVER_PORT is not set" + exit 1 +fi + +numerical_regex='^[0-9]+$' +if ! [[ ${NFS_UTILS_RDMA_SERVER_PORT} =~ $numerical_regex ]]; then + echo "You need to fix $CONFIG" + echo "NFS_UTILS_RDMA_SERVER_PORT=${NFS_UTILS_RDMA_SERVER_PORT} - Acceptable values are only integers" + exit 2 +fi + +modprobe svcrdma +echo "Attempted loading kernel module svcrdma." + +echo "rdma ${NFS_UTILS_RDMA_SERVER_PORT}" > /proc/fs/nfsd/portlist +echo "Attempted setting rdma port to ${NFS_UTILS_RDMA_SERVER_PORT}." + +unset NFS_UTILS_RDMA_SERVER_PORT + +exit 0 diff --git a/nfs-utils-rdma-server.conf b/nfs-utils-rdma-server.conf new file mode 100644 index 000000000000..d701c9eb2325 --- /dev/null +++ b/nfs-utils-rdma-server.conf @@ -0,0 +1,13 @@ +# nfs-utils-rdma-server is designed to load the necessary kernel module for +# running an NFS server with RDMA support, and to set the server port to be +# used. + +# NFS_UTILS_RDMA_SERVER_PORT=<port> +# port valid values: +# nfs-utils-rdma-server allows any integer value. +# The value is directly echoed after "rdma" to /proc/fs/nfsd/portlist, +# so the actual valid values will depend on what it takes. +# The recommended value is 20049, which was approved by the IANA for +# NFS/RDMA, chosen because it is similar to port 2049 for NFS. See: +# http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml +NFS_UTILS_RDMA_SERVER_PORT=20049 diff --git a/nfs-utils-rdma-server.install b/nfs-utils-rdma-server.install new file mode 100644 index 000000000000..40be7e5d20c9 --- /dev/null +++ b/nfs-utils-rdma-server.install @@ -0,0 +1,14 @@ +post_install() { + echo "nfs-utils-rdma-server + + NOTE: In your /etc/exports or /etc/exports.d/*.exports files, you MUST use + the insecure option, because the NFS/RDMA client does not use a + reserved port. This option ONLY means that the client can be using a + port less than IPPORT_RESERVED (1024). + + NOTE: If you want to run nfs v4.0+ only, you do not need rpcbind. In this + case, change /etc/conf.d/nfs-server.conf to contain: + NFSD_OPTS=\"-N 2 -N 3\" + And, on clients, you muse use \"mount -t nfs4 ...\" +" +} diff --git a/nfs-utils-rdma-server.service b/nfs-utils-rdma-server.service new file mode 100644 index 000000000000..539bab8494e6 --- /dev/null +++ b/nfs-utils-rdma-server.service @@ -0,0 +1,16 @@ +[Unit] +Description=Load kernel module for NFS server using RDMA, and configure RDMA port +Documentation=file:/etc/nfs-utils-rdma-server.conf +RefuseManualStop=true +DefaultDependencies=false +Conflicts=emergency.target emergency.service +Before=remote-fs-pre.target +After=nfs-server.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/nfs-utils-rdma-server + +[Install] +WantedBy=sysinit.target |