From 0c656a964da7993847943c438c5abee7f46aa06d Mon Sep 17 00:00:00 2001 From: Giuseppe Di Natale Date: Mon, 24 Jul 2017 11:03:50 -0700 Subject: Disable nbmand tests on kernels w/o support This change allows mountpoint_003_pos and send-c_props to run on Linux kernels that do not support mandatory locking. Linux kernel versions greater than or equal to 4.4 no longer support mandatory locking and the test suite will now account for that. Reviewed-by: Brian Behlendorf Reviewed-by: Tony Hutter Reviewed-by: George Melikov Signed-off-by: Giuseppe Di Natale Closes #6346 Closes #6347 Closes #6362 --- tests/zfs-tests/include/libtest.shlib | 23 +++++++++++++++++++++++ tests/zfs-tests/include/properties.shlib | 13 +++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) (limited to 'tests/zfs-tests/include') diff --git a/tests/zfs-tests/include/libtest.shlib b/tests/zfs-tests/include/libtest.shlib index 1d1c57e7a..88594c201 100644 --- a/tests/zfs-tests/include/libtest.shlib +++ b/tests/zfs-tests/include/libtest.shlib @@ -40,6 +40,29 @@ if [ -n "$STF_PATH" ]; then PATH="$STF_PATH" fi +# Linux kernel version comparison function +# +# $1 Linux version ("4.10", "2.6.32") or blank for installed Linux version +# +# Used for comparison: if [ $(linux_version) -ge $(linux_version "2.6.32") ] +# +function linux_version +{ + typeset ver="$1" + + [[ -z "$ver" ]] && ver=$(uname -r | grep -Eo "^[0-9]+\.[0-9]+\.[0-9]+") + + typeset version=$(echo $ver | cut -d '.' -f 1) + typeset major=$(echo $ver | cut -d '.' -f 2) + typeset minor=$(echo $ver | cut -d '.' -f 3) + + [[ -z "$version" ]] && version=0 + [[ -z "$major" ]] && major=0 + [[ -z "$minor" ]] && minor=0 + + echo $((version * 10000 + major * 100 + minor)) +} + # Determine if this is a Linux test system # # Return 0 if platform Linux, 1 if otherwise diff --git a/tests/zfs-tests/include/properties.shlib b/tests/zfs-tests/include/properties.shlib index 6a3a0e1ce..25a9846dd 100644 --- a/tests/zfs-tests/include/properties.shlib +++ b/tests/zfs-tests/include/properties.shlib @@ -91,8 +91,17 @@ function get_rand_large_recsize # # Functions to toggle on/off properties # -typeset -a binary_props=('atime' 'devices' 'exec' 'nbmand' 'readonly' 'setuid' - 'xattr' 'zoned') +typeset -a binary_props=('atime' 'devices' 'exec' 'readonly' 'setuid' 'xattr' + 'zoned') + +if is_linux; then + # Only older kernels support non-blocking mandatory locks + if [[ $(linux_version) -lt $(linux_version "4.4") ]]; then + binary_props+=('nbmand') + fi +else + binary_props+=('nbmand') +fi function toggle_prop { -- cgit v1.2.3