generic/317,318: fail gracefully if userns not supported
authorEric Sandeen <sandeen@sandeen.net>
Tue, 17 Jun 2014 23:34:39 +0000 (09:34 +1000)
committerDave Chinner <david@fromorbit.com>
Tue, 17 Jun 2014 23:34:39 +0000 (09:34 +1000)
generic/317 and generic/318 fail un-gracefully on older kernels
which don't support userns; fix that by running a simple test
as a prerequisite and fail gracefully if needed.

Roll that in with the test for executable presence, and make
a new _require_userns()

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
common/rc
tests/generic/317
tests/generic/318

index 4149304a58172409a2ab1a2f172694198447c7cf..2c83340928bbcb32c14e99c4992972610bb64118 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -2132,6 +2132,12 @@ _require_relatime()
        _scratch_unmount
 }
 
+_require_userns()
+{
+       [ -x src/nsexec ] || _notrun "src/nsexec executable not found"
+       src/nsexec -U true 2>/dev/null || _notrun "userns not supported by this kernel"
+}
+
 _create_loop_device()
 {
        file=$1
index e016a4212a8faf3455daf89f2e1408ca6627e982..efa37c767b19140bc688007fff30f985ae4d7d0b 100755 (executable)
@@ -53,7 +53,6 @@ _supported_fs generic
 # only Linux supports user namespace
 _supported_os Linux
 
-[ -x $nsexec  ] || _notrun "$nsexec executable not found"
 [ -x $lstat64 ] || _notrun "$lstat64 executable not found"
 
 rm -f $seqres.full
@@ -62,6 +61,7 @@ _require_scratch
 _need_to_be_root
 _require_user
 _require_ugid_map
+_require_userns
 qa_user_id=`grep $qa_user /etc/passwd |awk -F: '{print $3}'`
 
 _filter_output()
index 0bfbba01cc83bf091ca93387e289c1e6170d1abb..8237434ed1d32226ac707be4e02ed217eacb0eec 100755 (executable)
@@ -55,8 +55,6 @@ _supported_fs generic
 # only Linux supports user namespace
 _supported_os Linux
 
-[ -x $nsexec ] || _notrun "$nsexec executable not found"
-
 rm -f $seqres.full
 
 _require_scratch
@@ -64,6 +62,7 @@ _need_to_be_root
 _acl_setup_ids
 _require_acls
 _require_ugid_map
+_require_userns
 ns_acl1=0
 ns_acl2=`expr $acl2 - $acl1`
 ns_acl3=`expr $acl3 - $acl1`