From 97b5c1cd5a2029981f08e2181f3a0b56c6291102 Mon Sep 17 00:00:00 2001 From: Shaun Tancheff Date: Wed, 2 Oct 2024 12:00:36 +0700 Subject: [PATCH] LU-18224 o2ib: normalize in-kernel-ko2iblnd.ko name 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 Change-Id: Iab1c0502724a3bcf91ef7c62e7ae9ee23f2ccff6 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/56366 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Alexey Lyashkov Reviewed-by: Oleg Drokin Reviewed-by: Caleb Carlson --- lnet/autoconf/lustre-lnet.m4 | 3 ++ lnet/klnds/in-kernel-o2iblnd/Makefile.in | 4 +- lnet/klnds/in-kernel-o2iblnd/autoMakefile.am | 17 +++------ lnet/klnds/o2iblnd/Makefile.in | 2 +- lnet/klnds/o2iblnd/o2iblnd.c | 8 +++- lustre.spec.in | 55 +++++++++++++++++++++------- lustre/tests/test-framework.sh | 4 +- rpm/kmp-lnet-in-kernel-o2iblnd.files | 1 + 8 files changed, 63 insertions(+), 31 deletions(-) diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 161dee7..4c46f9c 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -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) diff --git a/lnet/klnds/in-kernel-o2iblnd/Makefile.in b/lnet/klnds/in-kernel-o2iblnd/Makefile.in index d686746..e5d68bd 100644 --- a/lnet/klnds/in-kernel-o2iblnd/Makefile.in +++ b/lnet/klnds/in-kernel-o2iblnd/Makefile.in @@ -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 diff --git a/lnet/klnds/in-kernel-o2iblnd/autoMakefile.am b/lnet/klnds/in-kernel-o2iblnd/autoMakefile.am index 4235c3b..c5db31c 100644 --- a/lnet/klnds/in-kernel-o2iblnd/autoMakefile.am +++ b/lnet/klnds/in-kernel-o2iblnd/autoMakefile.am @@ -12,13 +12,12 @@ 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) diff --git a/lnet/klnds/o2iblnd/Makefile.in b/lnet/klnds/o2iblnd/Makefile.in index 3e4838f..1c38629 100644 --- a/lnet/klnds/o2iblnd/Makefile.in +++ b/lnet/klnds/o2iblnd/Makefile.in @@ -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@ diff --git a/lnet/klnds/o2iblnd/o2iblnd.c b/lnet/klnds/o2iblnd/o2iblnd.c index 74bc26f..24dbee7 100644 --- a/lnet/klnds/o2iblnd/o2iblnd.c +++ b/lnet/klnds/o2iblnd/o2iblnd.c @@ -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. "); 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); diff --git a/lustre.spec.in b/lustre.spec.in index 637a1fd..793058c 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -155,27 +155,27 @@ %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 < $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 < $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} diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 3ce61f0..ccd49be 100755 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -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" ;; diff --git a/rpm/kmp-lnet-in-kernel-o2iblnd.files b/rpm/kmp-lnet-in-kernel-o2iblnd.files index a170b77..4eff25e 100644 --- a/rpm/kmp-lnet-in-kernel-o2iblnd.files +++ b/rpm/kmp-lnet-in-kernel-o2iblnd.files @@ -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 -- 1.8.3.1