From c310af5b2a35f9010ac2b9348c1d9f3cd4af01e7 Mon Sep 17 00:00:00 2001 From: Nathaniel Clark Date: Wed, 11 Sep 2019 11:10:58 -0400 Subject: [PATCH] LU-12745 build: Account for optional SPL for ZFS 0.8+ With ZFS 0.8.0 and later, SPL is not longer present. Some zfs packages provide vestigial spl package contents, but zfs-dkms does not. This makes testing SPL directories optional depending on version of ZFS, this also accounts for the new location of the spl include directory under the zfs include directory. Lustre-change: https://review.whamcloud.com/36161 Lustre-commit: a245dde23a9fdbdff7d09a783bcbe3349f68a908 Test-Parameters: trivial Signed-off-by: Nathaniel Clark Change-Id: I8afcff079f25543a3c86df0c404146a859b226aa Reviewed-by: Brian Behlendorf Reviewed-by: Patrick Farrell Signed-off-by: Minh Diep Reviewed-on: https://review.whamcloud.com/36408 Reviewed-by: James Simmons Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- config/lustre-build-linux.m4 | 2 +- config/lustre-build-zfs.m4 | 49 ++++++++++++++++++++++++++++---------------- lustre/osd-zfs/Makefile.in | 6 ++++-- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/config/lustre-build-linux.m4 b/config/lustre-build-linux.m4 index 9941045..f0e37de 100644 --- a/config/lustre-build-linux.m4 +++ b/config/lustre-build-linux.m4 @@ -530,7 +530,7 @@ AC_DEFUN([LB_LINUX_COMPILE_IFELSE], [m4_ifvaln([$1], [AC_LANG_CONFTEST([AC_LANG_SOURCE([$1])])])dnl rm -f build/conftest.o build/conftest.mod.c build/conftest.ko SUBARCH=$(echo $target_cpu | sed -e 's/powerpc.*/powerpc/' -e 's/ppc.*/powerpc/' -e 's/x86_64/x86/' -e 's/i.86/x86/' -e 's/k1om/x86/' -e 's/aarch64.*/arm64/' -e 's/armv7.*/arm/') -AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] LDFLAGS= ${LD:+LD="$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_CHECK_INCLUDE -I$LINUX/arch/$SUBARCH/include -Iinclude -Iarch/$SUBARCH/include/generated -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -Iinclude/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL -I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include} -include $CONFIG_INCLUDE" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], +AS_IF([AC_TRY_COMMAND(cp conftest.c build && make -d [$2] LDFLAGS= ${LD:+LD="$LD"} CC="$CC" -f $PWD/build/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG LINUXINCLUDE="$EXTRA_CHECK_INCLUDE -I$LINUX/arch/$SUBARCH/include -Iinclude -Iarch/$SUBARCH/include/generated -I$LINUX/include -Iinclude2 -I$LINUX/include/uapi -Iinclude/generated -I$LINUX/arch/$SUBARCH/include/uapi -Iarch/$SUBARCH/include/generated/uapi -I$LINUX/include/uapi -Iinclude/generated/uapi ${SPL_OBJ:+-include $SPL_OBJ/spl_config.h} ${ZFS_OBJ:+-include $ZFS_OBJ/zfs_config.h} ${SPL:+-I$SPL/include } ${ZFS:+-I$ZFS -I$ZFS/include -I${SPL:-$ZFS/include/spl}} -include $CONFIG_INCLUDE" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $MODULE_TARGET=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])], [$4], [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])dnl]) diff --git a/config/lustre-build-zfs.m4 b/config/lustre-build-zfs.m4 index 54d788f..80dfcff 100644 --- a/config/lustre-build-zfs.m4 +++ b/config/lustre-build-zfs.m4 @@ -111,7 +111,7 @@ AC_DEFUN([LB_SPL], [ dnl # AC_MSG_CHECKING([spl build directory]) AS_IF([test -z "$splobj"], [ - last_spl_obj_dir=$(ls -d ${splsrc}/[[0-9]]*/ | tail -n 1 | sed 's|/$||') + last_spl_obj_dir=$(ls -d ${splsrc}/[[0-9]]*/ 2> /dev/null | tail -n 1 | sed 's|/$||') AS_IF([test "${splsrc}" = "${spldkms}/source"], [ AS_IF([test -e "${spldkms}/${LINUXRELEASE}/${target_cpu}/spl_config.h"], [ splobj=${spldkms}/${LINUXRELEASE}/${target_cpu} @@ -229,7 +229,7 @@ AC_DEFUN([LB_ZFS], [ dnl # AC_MSG_CHECKING([zfs build directory]) AS_IF([test -z "$zfsobj"], [ - last_zfs_obj_dir=$(ls -d ${zfssrc}/[[0-9]]*/ | tail -n 1 | sed 's|/$||') + last_zfs_obj_dir=$(ls -d ${zfssrc}/[[0-9]]*/ 2> /dev/null | tail -n 1 | sed 's|/$||') AS_IF([test "${zfssrc}" = "${zfsdkms}/source"], [ AS_IF([test -e "${zfsdkms}/${LINUXRELEASE}/${target_cpu}/zfs_config.h"], [ zfsobj=${zfsdkms}/${LINUXRELEASE}/${target_cpu} @@ -348,21 +348,26 @@ AC_DEFUN([LB_CONFIG_ZFS], [ [AS_HELP_STRING([--with-zfs=PATH], [Path to zfs source])], [ AS_IF([test x$withval = xno], [ + enable_spl=no enable_zfs=no require_zfs=no ], [test x$withval = xyes], [ + enable_spl=yes enable_zfs=yes require_zfs=yes ], [ + enable_spl=yes enable_zfs=yes require_zfs=yes zfssrc="$withval" ]) ], [ AS_IF([test x$enable_server != xno], [ + enable_spl=yes require_zfs=no enable_zfs=yes ], [ + enable_spl=no require_zfs=no enable_zfs=no ]) @@ -373,13 +378,35 @@ AC_DEFUN([LB_CONFIG_ZFS], [ AS_IF([test x$enable_zfs = xyes], [ AS_IF([test x$enable_modules = xyes], [ - LB_SPL LB_ZFS ]) LB_ZFS_DEVEL LB_ZFS_USER dnl # + dnl # Define zfs source code version + dnl # + ZFS_MAJOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1/']) + ZFS_MINOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\2/']) + ZFS_PATCH=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\3/']) + ZFS_FIX=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\5/']) + AS_IF([test -z "$ZFS_FIX"], [ZFS_FIX="0"]) + + AC_DEFINE_UNQUOTED([ZFS_MAJOR], [$ZFS_MAJOR], [zfs major version]) + AC_DEFINE_UNQUOTED([ZFS_MINOR], [$ZFS_MINOR], [zfs minor version]) + AC_DEFINE_UNQUOTED([ZFS_PATCH], [$ZFS_PATCH], [zfs patch version]) + AC_DEFINE_UNQUOTED([ZFS_FIX], [$ZFS_FIX], [zfs fix version]) + + dnl # + dnl # SPL is only needed if ZFS is prior to 0.8.0 + dnl # + AS_IF([test x$enable_modules = xyes && test $ZFS_MAJOR -eq 0 && test $ZFS_MINOR -lt 8], [ + LB_SPL + ],[ + enable_spl=no + ]) + + dnl # dnl # enable_zfs will be set to no in LB_SPL or LB_ZFS if dnl # one of more of the build requirements is not met. dnl # @@ -408,21 +435,6 @@ your distribution. ]) ]) - dnl # - dnl # Define zfs source code version - dnl # - AS_IF([test x$enable_zfs = xyes], [ - ZFS_MAJOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1/']) - ZFS_MINOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\2/']) - ZFS_PATCH=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\3/']) - ZFS_FIX=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\5/']) - AS_IF([test -z "$ZFS_FIX"], [ZFS_FIX="0"]) - - AC_DEFINE_UNQUOTED([ZFS_MAJOR], [$ZFS_MAJOR], [zfs major version]) - AC_DEFINE_UNQUOTED([ZFS_MINOR], [$ZFS_MINOR], [zfs minor version]) - AC_DEFINE_UNQUOTED([ZFS_PATCH], [$ZFS_PATCH], [zfs patch version]) - AC_DEFINE_UNQUOTED([ZFS_FIX], [$ZFS_FIX], [zfs fix version]) - ]) AS_IF([test "x$enable_zfs" = xyes], [ LB_CHECK_COMPILE([if zfs defines dsl_pool_config_enter/exit], @@ -716,4 +728,5 @@ your distribution. AC_SUBST(ENABLE_ZFS, no) ]) AM_CONDITIONAL(ZFS_ENABLED, [test "x$enable_zfs" = xyes]) + AM_CONDITIONAL(SPL_ENABLED, [test "x$enable_spl" = xyes]) ]) diff --git a/lustre/osd-zfs/Makefile.in b/lustre/osd-zfs/Makefile.in index 4483348..a43df42 100644 --- a/lustre/osd-zfs/Makefile.in +++ b/lustre/osd-zfs/Makefile.in @@ -3,8 +3,10 @@ osd_zfs-objs := osd_handler.o osd_lproc.o osd_quota.o osd_zfs-objs += osd_object.o osd_io.o osd_oi.o osd_xattr.o osd_index.o osd_zfs-objs += osd_scrub.o -EXTRA_PRE_CFLAGS += -include @SPL_OBJ@/spl_config.h +@SPL_ENABLED_TRUE@EXTRA_PRE_CFLAGS += -include @SPL_OBJ@/spl_config.h +@SPL_ENABLED_TRUE@EXTRA_PRE_CFLAGS += -I@SPL@ -I@SPL@/include EXTRA_PRE_CFLAGS += -include @ZFS_OBJ@/zfs_config.h -EXTRA_PRE_CFLAGS += -I@SPL@ -I@SPL@/include -I@ZFS@ -I@ZFS@/include +EXTRA_PRE_CFLAGS += -I@ZFS@ -I@ZFS@/include +@SPL_ENABLED_FALSE@EXTRA_PRE_CFLAGS += -I@ZFS@/include/spl @INCLUDE_RULES@ -- 1.8.3.1