diff --git a/lustre/tests/acceptance-small.sh b/lustre/tests/acceptance-small.sh
index fc0ba898b7cd98fb360478261a3122bcaf528e8c..14f7d58904a0a827572d37a6d4a03daeabcdedb7 100755
--- a/lustre/tests/acceptance-small.sh
+++ b/lustre/tests/acceptance-small.sh
@@ -53,6 +53,7 @@ setup_if_needed() {
     local MOUNTED=$(mounted_lustre_filesystems)
     if $(echo $MOUNTED | grep -w -q $MOUNT); then
         check_config $MOUNT
+        init_versions_vars
         return
     fi
 
@@ -304,8 +305,12 @@ for NAME in $CONFIGS; do
 	fi
 
 	[ "$NETTYPE" = "tcp" -o "$NETTYPE" = "ptl" ] || LIBLUSTRE=no # bug 15660
+	if [ "$LIBLUSTRE" != "no" ] && ! check_versions ; then
+		skip liblustre version mismatch: cli $CLIVER, mds $MDSVER, ost $OSTVER
+		LIBLUSTRE=no	# bug 17696
+	fi
 	if [ "$LIBLUSTRE" != "no" ]; then
-	        title liblustre
+		title liblustre
 		assert_env MGSNID MOUNT2
 		export LIBLUSTRE_MOUNT_POINT=$MOUNT2
 		export LIBLUSTRE_MOUNT_RETRY=5
diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh
index bd71dbb1ccc5005b90642e273d63f511ce2bcbca..f104563176942097826da4c0ee000dbfc14a0c72 100644
--- a/lustre/tests/test-framework.sh
+++ b/lustre/tests/test-framework.sh
@@ -1006,6 +1006,7 @@ setupall() {
         [ -n "$CLIENTS" ] && zconf_mount_clients $CLIENTS $MOUNT2
     fi
     sleep 5
+    init_versions_vars
 }
 
 mounted_lustre_filesystems() {
@@ -1043,6 +1044,12 @@ init_facets_vars () {
     done
 }
 
+init_versions_vars () {
+    export MDSVER=$(do_facet mds "lctl get_param version" | cut -d. -f1,2)
+    export OSTVER=$(do_facet ost1 "lctl get_param version" | cut -d. -f1,2)
+    export CLIVER=$(lctl get_param version | cut -d. -f 1,2)
+}
+
 check_config () {
     local mntpt=$1
     
@@ -1067,6 +1074,7 @@ check_and_setup_lustre() {
     else
         check_config $MOUNT
         init_facets_vars
+        init_versions_vars
     fi
     if [ "$ONLY" == "setup" ]; then
         exit 0
@@ -1693,9 +1701,13 @@ is_patchless ()
     lctl get_param version | grep -q patchless
 }
 
+check_versions () {
+    [ "$MDSVER" = "$CLIVER" -a "$OSTVER" = "$CLIVER" ]
+}
+
 get_node_count() {
-   local nodes="$@"
-   echo $nodes | wc -w || true
+    local nodes="$@"
+    echo $nodes | wc -w || true
 }
 
 mixed_ost_devs () {