diff options
author | Giuseppe Di Natale <[email protected]> | 2017-07-24 11:03:50 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2017-07-24 11:03:50 -0700 |
commit | 0c656a964da7993847943c438c5abee7f46aa06d (patch) | |
tree | ebc55bcc94def191787b1db92bd5f79aab620211 | |
parent | c89a02a26ae8f314c621ffd5542a3502a196b7d0 (diff) |
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 <[email protected]>
Reviewed-by: Tony Hutter <[email protected]>
Reviewed-by: George Melikov <[email protected]>
Signed-off-by: Giuseppe Di Natale <[email protected]>
Closes #6346
Closes #6347
Closes #6362
-rw-r--r-- | tests/zfs-tests/include/libtest.shlib | 23 | ||||
-rw-r--r-- | tests/zfs-tests/include/properties.shlib | 13 | ||||
-rwxr-xr-x | tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh | 6 |
3 files changed, 39 insertions, 3 deletions
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 { diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh index dcba41919..9bbb480ae 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh @@ -67,11 +67,15 @@ if is_linux; then set -A args \ "nodev" "dev" \ "noexec" "exec" \ - "mand" "nomand" \ "ro" "rw" \ "nosuid" "suid" \ "xattr" "noxattr" \ "atime" "noatime" + + # Only older kernels support non-blocking mandatory locks + if [[ $(linux_version) -lt $(linux_version "4.4") ]]; then + args+=("mand" "nomand") + fi else set -A args \ "devices" "/devices/" "nodevices" "/nodevices/" \ |