Whamcloud - gitweb
LU-17233 dkms: support for kfilnd and gnilnd 56/52856/3
authorShaun Tancheff <shaun.tancheff@hpe.com>
Fri, 27 Oct 2023 18:47:58 +0000 (13:47 -0500)
committerShaun Tancheff <shaun.tancheff@hpe.com>
Tue, 23 Jan 2024 18:38:42 +0000 (01:38 +0700)
dkms should try to build build kkfilnd if kfi support is
detected. Similarly kgnilnd can be built if perquisites
can be found.

HPE-bug-id: LUS-11893, LUS-11902
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: Ie4b0957e7a0eda4f25ae96a12619baae6d6d170a

lustre-dkms_post-build.sh
lustre-dkms_pre-build.sh
lustre/scripts/dkms.mkconf

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 ce298cb..330e498 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=""
+       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
+       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
+       else
+               O2IBPATH=yes
+       fi
+       KERNEL_STUFF="${KERNEL_STUFF} --with-o2ib=${O2IBPATH}"
+       if [ -n ${kmoddir} ]; then
+               KERNEL_STUFF="${KERNEL_STUFF} --with-kmp-moddir=${kmoddir}/${name}"
+       fi
+       sh ./autogen.sh
        ;;
 
     lustre-zfs|lustre-all)
index 705b8ef..54f0d5e 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
@@ -57,6 +57,20 @@ DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ksocklnd"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/klnds/socklnd/"
 DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
+# Duplicate logic from PRE_BUILD script for kfi driver
+flavor=\$(echo \$kernelver | tr '-' '\n' | tail -1)
+if [ -f /usr/src/kfabric/\${flavor}/Module.symvers -o -f /usr/src/kfabric/default/Module.symvers ] ; then
+       BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="kkfilnd"
+       BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/klnds/kfilnd/"
+       DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/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
+       BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="kgnilnd"
+       BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/klnds/gnilnd/"
+       DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
+fi
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ko2iblnd"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/klnds/o2iblnd/"
 DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"