Whamcloud - gitweb
LU-17233 dkms: support for kfilnd and gnilnd 56/52856/11
authorShaun Tancheff <shaun.tancheff@hpe.com>
Sat, 25 May 2024 17:12:10 +0000 (11:12 -0600)
committerOleg Drokin <green@whamcloud.com>
Wed, 5 Jun 2024 04:49:17 +0000 (04:49 +0000)
dkms should try to build build kkfilnd if kfi support is
detected. Similarly kgnilnd can be built if perquisites
can be found.

Test-Parameters: trivial
HPE-bug-id: LUS-12070, LUS-11893, LUS-11902
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: Ie4b0957e7a0eda4f25ae96a12619baae6d6d170a
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52856
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Caleb Carlson <caleb.carlson@hpe.com>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
debian/dkms.conf.in
lustre-dkms_post-build.sh
lustre-dkms_pre-build.sh
lustre/scripts/dkms.mkconf

index f85a1fd..a538663 100644 (file)
@@ -100,6 +100,14 @@ module lnet          lnet/lnet          net/lustre
 module lnet_selftest lnet/selftest      net/lustre
 module ksocklnd      lnet/klnds/socklnd net/lustre
 
+# LNet lnd modules
+lnds="socklnd"
+if [ -f /usr/src/kfabric/default/Module.symvers ] ; then
+    module kkfilnd   lnet/klnds/kfilnd  net/lustre
+fi
+if pkg-config --cflags cray-gni cray-gni-headers cray-krca lsb-cray-hss > /dev/null 2>&1 ; then
+    module kgnilnd   lnet/klnds/gnilnd  net/lustre
+fi
 # Determine which, if any, o2ib to install:
 can_o2ib_mofed=no
 can_o2ib_in_kernel=no
index a2f785d..bd4f788 100755 (executable)
@@ -17,6 +17,7 @@
 # $5 : $arch
 # $6 : $source_tree
 # $7 : $dkms_tree
+# $8 : $kmoddir
 #
 # This script ensure that ALL Lustre kernel modules that have been built
 # during DKMS build step of lustre[-client]-dkms module will be moved in
index 56baef7..7a4c2d2 100755 (executable)
 # $5 : $arch
 # $6 : $source_tree
 # $7 : $dkms_tree
-#
+# $8 : $kmoddir [lustre-client either 'extra|updates']
 
 case $1 in
     lustre-client)
-       SERVER="--disable-server"
-       KERNEL_STUFF="--with-linux=$4 --with-linux-obj=$4"
+       SERVER="--disable-server --enable-client"
+       ksrc="$(dirname $4)/source"
+       KERNEL_STUFF="--with-linux=$(realpath $ksrc) --with-linux-obj=$(realpath $4)"
+       name=$1
+       kmoddir=$8
+       flavor=$(echo $3 | tr '-' '\n' | tail -1)
+       if [ -f /usr/src/kfabric/${flavor}/Module.symvers ]; then
+               KERNEL_STUFF="${KERNEL_STUFF} --with-kfi=/usr/src/kfabric/${flavor}"
+       elif [ -f /usr/src/kfabric/default/Module.symvers ]; then
+               KERNEL_STUFF="${KERNEL_STUFF} --with-kfi=/usr/src/kfabric/default"
+       fi
+       O2IBPATH=""
+       if [ -d /usr/src/ofa_kernel/${flavor} ]; then
+               O2IBPATH=/usr/src/ofa_kernel/${flavor}
+       elif [ -d /usr/src/ofa_kernel/default ]; then
+               O2IBPATH=/usr/src/ofa_kernel/default
+       fi
+       if [ -n ${O2IBPATH} ]; then
+               KERNEL_STUFF="${KERNEL_STUFF} --with-o2ib=${O2IBPATH}"
+       fi
+       if [ -n ${kmoddir} ]; then
+               KERNEL_STUFF="${KERNEL_STUFF} --with-kmp-moddir=${kmoddir}/${name}"
+       fi
+       sh ./autogen.sh
        ;;
 
     lustre-zfs|lustre-all)
index b6b8f9b..47b5c54 100755 (executable)
@@ -25,10 +25,10 @@ PACKAGE_CONFIG="/etc/sysconfig/lustre"
 # re-evaluate/create dkms.conf on-target based on local build-time products/dependencies
 # (like krb5-devel presence) and also upon configure results/errors before dkms builds
 PRE_BUILD="lustre-dkms_pre-build.sh \$module \$module_version \$kernelver \$kernel_source_dir \
-        \$arch \$source_tree \$dkms_tree"
+        \$arch \$source_tree \$dkms_tree \$kmoddir"
 # to ensure all just built Lustre kernel modules will be saved for further install
 POST_BUILD="lustre-dkms_post-build.sh \$module \$module_version \$kernelver \$kernel_source_dir \
-        \$arch \$source_tree \$dkms_tree"
+        \$arch \$source_tree \$dkms_tree \$kmoddir"
 EOF
 if [ $pkgname = "lustre-zfs" -o $pkgname = "lustre-all" ] ; then
        cat >>${filename} <<EOF
@@ -125,6 +125,15 @@ module() {
 module lnet_selftest lnet/selftest      lnet
 module lnet          lnet/lnet          lnet
 module ksocklnd      lnet/klnds/socklnd lnet
+flavor=\$(echo \$kernelver | tr '-' '\n' | tail -1)
+if [ -f /usr/src/kfabric/\${flavor}/Module.symvers -o -f /usr/src/kfabric/default/Module.symvers ] ; then
+    module kkfilnd   lnet/klnds/kfilnd  lnet
+fi
+# Guessing if gni packages are installed
+pkg-config --cflags cray-gni cray-gni-headers cray-krca lsb-cray-hss > /dev/null 2>&1
+if [ \$? -eq 0 ] ; then
+    module kgnilnd   lnet/klnds/gnilnd  lnet
+fi
 # in-kernel-o2ib or mofed
 if [ "x\${ext_mofed}" = "xyes" ] ; then
     module ko2iblnd lnet/klnds/o2iblnd lnet