From 0142d86fda55813244bd0720927a0b426e7a6ea5 Mon Sep 17 00:00:00 2001 From: Shaun Tancheff Date: Sat, 25 May 2024 11:12:10 -0600 Subject: [PATCH] LU-17233 dkms: support for kfilnd and gnilnd 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 Change-Id: Ie4b0957e7a0eda4f25ae96a12619baae6d6d170a Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52856 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Caleb Carlson Reviewed-by: Petros Koutoupis Reviewed-by: Oleg Drokin --- debian/dkms.conf.in | 8 ++++++++ lustre-dkms_post-build.sh | 1 + lustre-dkms_pre-build.sh | 28 +++++++++++++++++++++++++--- lustre/scripts/dkms.mkconf | 13 +++++++++++-- 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/debian/dkms.conf.in b/debian/dkms.conf.in index f85a1fd..a538663 100644 --- a/debian/dkms.conf.in +++ b/debian/dkms.conf.in @@ -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 diff --git a/lustre-dkms_post-build.sh b/lustre-dkms_post-build.sh index a2f785d..bd4f788 100755 --- a/lustre-dkms_post-build.sh +++ b/lustre-dkms_post-build.sh @@ -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 diff --git a/lustre-dkms_pre-build.sh b/lustre-dkms_pre-build.sh index 56baef7..7a4c2d2 100755 --- a/lustre-dkms_pre-build.sh +++ b/lustre-dkms_pre-build.sh @@ -17,12 +17,34 @@ # $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) diff --git a/lustre/scripts/dkms.mkconf b/lustre/scripts/dkms.mkconf index b6b8f9b..47b5c54 100755 --- a/lustre/scripts/dkms.mkconf +++ b/lustre/scripts/dkms.mkconf @@ -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} < /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 -- 1.8.3.1