]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
btrfs/003: enable test with virtio_blk devices in VM
authorNikolay Borisov <nborisov@suse.com>
Mon, 1 Apr 2019 11:08:37 +0000 (14:08 +0300)
committerEryu Guan <guaneryu@gmail.com>
Sat, 6 Apr 2019 11:23:47 +0000 (19:23 +0800)
For a long time this test has been failing on all kinds of VM
configuration, which are using virtio_blk devices. This is due to
the fact that scsi devices are deletable and virtio_blk are not.
However, this only prevents device replace case to run and has no
negative effect on the other useful test cases.

Re-enable btrfs/003 to run by making
_require_deletable_scratch_dev_pool private to the test case and
modifying it to return success (0) or failure (1) if devices are not
deletable. Further modify the replace test case to check the return
value of this function and skip it if devices are not deletable.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/rc
tests/btrfs/003

index 1c42515ff0ea534c677b532c4b5bfb6bad9c13e2..5693ba3cad181e8c5e77c1746b81f66631c0ae0d 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -2961,18 +2961,6 @@ _require_scratch_dev_pool_equal_size()
        done
 }
 
-# We will check if the device is deletable
-_require_deletable_scratch_dev_pool()
-{
-       local i
-       local x
-       for i in $SCRATCH_DEV_POOL; do
-               x=`echo $i | cut -d"/" -f 3`
-               if [ ! -f /sys/class/block/${x}/device/delete ]; then
-                       _notrun "$i is a device which is not deletable"
-               fi
-       done
-}
 
 # Check that fio is present, and it is able to execute given jobfile
 _require_fio()
index 22aa57aad0b913542aa6075ca4a8a597f04f3ef9..c72c34290ff0e62209581ee84e7522bbffa0ffd0 100755 (executable)
@@ -17,6 +17,21 @@ dev_removed=0
 removed_dev_htl=""
 trap "_cleanup; exit \$status" 0 1 2 3 15
 
+# Check if all scratch dev pools are deletable
+deletable_scratch_dev_pool()
+{
+       local i
+       local x
+       for i in $SCRATCH_DEV_POOL; do
+               x=`echo $i | cut -d"/" -f 3`
+               if [ ! -f /sys/class/block/${x}/device/delete ]; then
+                       return 1
+               fi
+       done
+
+       return 0
+}
+
 _cleanup()
 {
     cd /
@@ -35,7 +50,6 @@ _supported_fs btrfs
 _supported_os Linux
 _require_scratch
 _require_scratch_dev_pool 4
-_require_deletable_scratch_dev_pool
 _require_command "$WIPEFS_PROG" wipefs
 
 rm -f $seqres.full
@@ -111,6 +125,9 @@ _test_replace()
        local ds
        local d
 
+       # If scratch devs are not deletable skip this test
+       if ! deletable_scratch_dev_pool; then return 0; fi
+
        # exclude the first and the last disk in the disk pool
        n=$(($n-1))
        ds=${devs[@]:1:$(($n-1))}