Whamcloud - gitweb
LU-18224 o2ib: normalize in-kernel-ko2iblnd.ko name 66/56366/8
authorShaun Tancheff <shaun.tancheff@hpe.com>
Wed, 2 Oct 2024 05:00:36 +0000 (12:00 +0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 2 Jan 2025 20:41:57 +0000 (20:41 +0000)
in-kernel-ko2iblnd module should be named as ko2iblnd.

Also make it easier to identify in-kernel vs external
ko2ibldn driver with modinfo.

Module version should also include the ofed version provided
by ofed_info -n if it is available.

Test-Parameters: trivial
Fixes: 8b1d2a72f1 ("LU-16967 build: Add in-kernel-ko2iblnd driver")
HPE-bug-id: LUS-12525
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: Iab1c0502724a3bcf91ef7c62e7ae9ee23f2ccff6
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56366
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Caleb Carlson <caleb.carlson@hpe.com>
lnet/autoconf/lustre-lnet.m4
lnet/klnds/in-kernel-o2iblnd/Makefile.in
lnet/klnds/in-kernel-o2iblnd/autoMakefile.am
lnet/klnds/o2iblnd/Makefile.in
lnet/klnds/o2iblnd/o2iblnd.c
lustre.spec.in
lustre/tests/test-framework.sh
rpm/kmp-lnet-in-kernel-o2iblnd.files

index 161dee7..4c46f9c 100644 (file)
@@ -170,6 +170,7 @@ AS_IF([test $ENABLEO2IB = "no"], [
        EXT_O2IB_SYMBOLS=""
        INT_O2IB_SYMBOLS=""
 ], [
+       EXT_O2IB_VER=""
        # Verify in-kernel O2IB can be built (headers exist) ... or disable it.
        int_o2ib_found=false
        for INT_O2IBPATH in $INT_O2IBPATHS; do
@@ -282,6 +283,7 @@ Auto detection of external O2IB failed. Build of external o2ib disabled.])
                        rdma_destroy_id(NULL);
                ],[
                        EXT_O2IBLND="o2iblnd"
+                       EXT_O2IB_VER=$(ofed_info -n | tr . -)
                ],[
                        case $ENABLEO2IB in
                        "yes") AC_MSG_ERROR([cannot compile with OpenIB gen2 headers]) ;;
@@ -367,6 +369,7 @@ NOTE: --enable-multiple-lnds is needed to enable both o2iblnd drivers.
        ])
        EXTRA_CHECK_INCLUDE=""
 ])
+AC_SUBST(EXT_O2IB_VER)
 AC_SUBST(EXTRA_OFED_CONFIG)
 AC_SUBST(EXTRA_OFED_INCLUDE)
 AC_SUBST(EXT_O2IBLND)
index d686746..e5d68bd 100644 (file)
@@ -4,8 +4,8 @@
 # This file is part of Lustre, http://www.lustre.org/
 #
 
-MODULES := in-kernel-ko2iblnd
-in-kernel-ko2iblnd-objs := o2iblnd.o o2iblnd_cb.o o2iblnd_modparams.o
+MODULES := ko2iblnd
+ko2iblnd-objs := o2iblnd.o o2iblnd_cb.o o2iblnd_modparams.o
 
 in-kernel-ko2iblnd_headers := o2iblnd.h o2iblnd-idl.h
 in-kernel-ko2iblnd_sources := o2iblnd.c o2iblnd_cb.c o2iblnd_modparams.c
index 4235c3b..c5db31c 100644 (file)
 if MODULES
 if BUILT_IN_KO2IBLND
 modulenet_DATA = in-kernel-ko2iblnd$(KMODEXT)
-in-kernel-ko2iblnd$(KMODEXT): sources
+ko2iblnd$(KMODEXT): sources
+in-kernel-ko2iblnd$(KMODEXT): ko2iblnd$(KMODEXT)
+        cp -vf ko2iblnd$(KMODEXT) in-kernel-ko2iblnd$(KMODEXT)
 
 if EXTERNAL_KO2IBLND
 else
-ko2iblnd$(KMODEXT): in-kernel-ko2iblnd$(KMODEXT)
-       cp -vf in-kernel-ko2iblnd$(KMODEXT) ko2iblnd$(KMODEXT)
-
 install-exec-hook:
        (cd "$(DESTDIR)$(modulenetdir)"; \
         $(LN_S) -f in-kernel-ko2iblnd$(KMODEXT) ko2iblnd$(KMODEXT))
@@ -34,17 +33,11 @@ EXTRA_DIST = $(in-kernel-ko2iblnd-objs:%.o=%.c) o2iblnd-idl.h o2iblnd.h
 
 if MODULES
 if BUILT_IN_KO2IBLND
-if EXTERNAL_KO2IBLND
-# in-kernel and mofed
-all-local: $(in-kernel-ko2iblnd_headers) $(in-kernel-ko2iblnd_sources)
-else
-# in-kernel-only
-all-local: $(in-kernel-ko2iblnd_headers) $(in-kernel-ko2iblnd_sources) ko2iblnd$(KMODEXT)
-endif
+all-local: $(in-kernel-ko2iblnd_headers) $(in-kernel-ko2iblnd_sources) in-kernel-ko2iblnd$(KMODEXT)
 endif
 endif
 
 CLEANFILES = $(in-kernel-ko2iblnd_headers) $(in-kernel-ko2iblnd_sources)
 
 clean-local:
-       rm -rf $(in-kernel-ko2iblnd_headers) $(in-kernel-ko2iblnd_sources) ko2iblnd$(KMODEXT)
+       rm -rf $(in-kernel-ko2iblnd_headers) $(in-kernel-ko2iblnd_sources) ko2iblnd$(KMODEXT) in-kernel-ko2iblnd$(KMODEXT)
index 3e4838f..1c38629 100644 (file)
@@ -16,6 +16,6 @@ ko2iblnd-objs := o2iblnd.o o2iblnd_cb.o o2iblnd_modparams.o
 # any in-kernel OFED sources
 NOSTDINC_FLAGS += @EXTRA_OFED_CONFIG@ @EXTRA_OFED_INCLUDE@
 # Identify this as the External driver build
-NOSTDINC_FLAGS += -DEXTERNAL_OFED_BUILD
+NOSTDINC_FLAGS += -DEXTERNAL_OFED_BUILD -DEXTERNAL_OFED_VERSION='"@EXT_O2IB_VER@"'
 
 @INCLUDE_RULES@
index 74bc26f..24dbee7 100644 (file)
@@ -4086,9 +4086,15 @@ static int __init ko2iblnd_init(void)
        return 0;
 }
 
+#ifdef EXTERNAL_OFED_BUILD
+#define OFED_VERSION " (ext ofed: " EXTERNAL_OFED_VERSION ")"
+#else
+#define OFED_VERSION " (in-kernel)"
+#endif
+
 MODULE_AUTHOR("OpenSFS, Inc. <http://www.lustre.org/>");
 MODULE_DESCRIPTION("OpenIB gen2 LNet Network Driver");
-MODULE_VERSION("2.8.0");
+MODULE_VERSION("2.8.0" OFED_VERSION);
 MODULE_LICENSE("GPL");
 
 module_init(ko2iblnd_init);
index 637a1fd..793058c 100644 (file)
 %global krequires %(echo %{kver} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/[-.]ppc64$//' -e 's/\.aarch64$//' -e 's/-default$//' -e 's/-%{_flavor}//')
 
 %if "%{_vendor}" == "redhat" || "%{_vendor}" == "fedora" || 0%{?openEuler}
-       %global requires_kmod_name kmod-%{lustre_name}
-       %global requires_kmod_osd_zfs_name kmod-%{lustre_name}-osd-zfs
-       %if %{with lustre_tests}
-               %global requires_kmod_tests_name kmod-%{lustre_name}-tests
-       %endif
+       %global kmod_prefix kmod-
+       %global kmod_postfix %{nil}
+       %global kmod_flavor %{nil}
        %global requires_kmod_version %{version}
-       %global kmod_devel_pkg kmod-%{lustre_name}-devel
 #for Suse
 %else
-       %global requires_kmod_name %{lustre_name}-kmp
-       %global requires_kmod_osd_zfs_name %{lustre_name}-osd-zfs-kmp
-       %if %{with lustre_tests}
-               %global requires_kmod_tests_name %{lustre_name}-tests-kmp
-       %endif
+       %global kmod_prefix %{nil}
+       %global kmod_postfix -kmp
+       %global kmod_flavor -%{_flavor}
        %if 0%{?suse_version} >= 1200
                %global requires_kmod_version %{version}_k%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
        %else
                %global requires_kmod_version %{version}_%(echo %{krequires} | sed -r 'y/-/_/; s/^(2\.6\.[0-9]+)_/\\1.0_/;')
        %endif
-       %global kmod_devel_pkg %{lustre_name}-kmp-devel
 %endif
+%global requires_kmod_name %{kmod_prefix}%{lustre_name}%{kmod_postfix}
+%global requires_kmod_osd_zfs_name %{kmod_prefix}%{lustre_name}-osd-zfs%{kmod_postfix}
+%if %{with lustre_tests}
+       %global requires_kmod_tests_name %{kmod_prefix}%{lustre_name}-tests%{kmod_postfix}
+%endif
+%global kmod_devel_pkg %{kmod_prefix}%{lustre_name}%{kmod_postfix}-devel
 %global requires_release_major_minor %(echo %version | cut -d. -f1).%(echo %version | cut -d. -f2)
 %endif
 
@@ -506,21 +506,48 @@ to be used by the Lustre testing framework.
 # begin multiple_lnds
 %kernel_module_package -n %{name}-lnet-socklnd -p %SOURCE11 -f %SOURCE12 %{_flavor}
 %if %{with o2ib}
-## re-write post/preun generated by kmodtool [ls -s and rm -f]
+## in-kernel: re-write post/preun generated by kmodtool [ls -s and rm -f]
 %define inkernmod %{modules_fs_path}/%{lustre_name}/net/in-kernel-ko2iblnd.ko
 %define inkernsym %{modules_fs_path}/%{lustre_name}/net/ko2iblnd.ko
+%if 0%{?rhel} >= 8 || 0%{?fedora} >= 34
+%define inkernpost %%posttrans -n %{kmod_prefix}%{name}-lnet-in-kernel-o2iblnd%{kmod_postfix}%{kmod_flavor}
+%define inkernaction ln -sf %{inkernmod} %{inkernsym}
+%else
+%define inkernpost %{nil}
+%define inkernaction %{nil}
+%endif
 %define ofed_module_package %{expand:%(
 TMPFILE=`mktemp`
 cat <<EOF > $TMPFILE
 %kernel_module_package -n %{name}-lnet-in-kernel-o2iblnd -p %SOURCE19 -f %SOURCE20 %{_flavor}
+%inkernpost
+%inkernaction
 EOF
-sed -i -e '/^%%post.*/a ln -sf %{inkernmod} %{inkernsym}' -e '/^%%preun.*/a rm -f %{inkernsym}' $TMPFILE
+sed -i -e '/^%%post .*/a ln -sf %{inkernmod} %{inkernsym}' -e '/^%%preun.*/a if test -L %{inkernsym}; then rm -f %{inkernsym} ; fi' $TMPFILE
 echo $TMPFILE
 )}
 %{expand:%(cat '%{ofed_module_package}')}
 %endif
+## mofed: add a posttrans rule on el8 and later
 %if %{with mofed}
+%if 0%{?rhel} >= 8 || 0%{?fedora} >= 34
+%define exkernmod %{modules_fs_path}/%{lustre_name}/net/ko2iblnd.ko
+%define exkernpost %%posttrans -n %{kmod_prefix}%{name}-lnet-o2iblnd%{kmod_postfix}%{kmod_flavor}
+%define exkernaction if test -L %{exkernmod}; then rm -f %{exkernmod}; fi
+%else
+%define exkernpost %{nil}
+%define exkernaction %{nil}
+%endif
+%define ext_ofed_module_package %{expand:%(
+TMPEXT=`mktemp`
+cat <<EOF > $TMPEXT
 %kernel_module_package -n %{name}-lnet-o2iblnd -p %SOURCE13 -f %SOURCE14 %{_flavor}
+%exkernpost
+%exkernaction
+EOF
+echo $TMPEXT
+)}
+%{expand:%(cat '%{ext_ofed_module_package}')}
 %endif
 %if %{with gni}
 %kernel_module_package -n %{name}-lnet-gnilnd -p %SOURCE15 -f %SOURCE16 %{_flavor}
index 3ce61f0..ccd49be 100755 (executable)
@@ -1046,7 +1046,9 @@ load_lnet() {
        LNDPATH=${LNDPATH:-"../lnet/klnds"}
        if [ -z "$LNETLND" ]; then
                case $NETTYPE in
-               o2ib*)  LNETLND="o2iblnd/ko2iblnd" ;;
+               o2ib*)  [[ -f ${LNDPATH}/o2iblnd/ko2iblnd.ko ]] &&
+                               LNETLND="o2iblnd/ko2iblnd" ||
+                               LNETLND="in-kernel-o2iblnd/ko2iblnd";;
                tcp*)   LNETLND="socklnd/ksocklnd" ;;
                kfi*)   LNETLND="kfilnd/kkfilnd" ;;
                gni*)   LNETLND="gnilnd/kgnilnd" ;;
index a170b77..4eff25e 100644 (file)
@@ -1,3 +1,4 @@
 %defattr(-,root,root)
 %dir %{modules_fs_path}/%{lustre_name}/net
 %{modules_fs_path}/%{lustre_name}/net/in-kernel-ko2iblnd.ko
+%exclude %{modules_fs_path}/%{lustre_name}/net/ko2iblnd.ko