common/fuzzy: if the fuzz verb is random, keep fuzzing until we get a new value
[xfstests-dev.git] / common / defrag
index 942593e122dc1e237d5592f6b849503d114995f7..d279382f4b56e3239a7f7d3a1e96672c9f7a521b 100644 (file)
@@ -27,7 +27,19 @@ _require_defrag()
         DEFRAG_PROG="$XFS_FSR_PROG"
        ;;
     ext4|ext4dev)
-        DEFRAG_PROG="$E4DEFRAG_PROG"
+       testfile="$TEST_DIR/$$-test.defrag"
+       donorfile="$TEST_DIR/$$-donor.defrag"
+       bsize=`_get_block_size $TEST_DIR`
+       $XFS_IO_PROG -f -c "pwrite -b $bsize 0 $bsize" $testfile > /dev/null
+       cp $testfile $donorfile
+       echo $testfile | $here/src/e4compact -v -f $donorfile | \
+               grep -q "err:95"
+       if [ $? -eq 0 ]; then
+               rm -f $testfile $donorfile 2>&1 > /dev/null
+               _notrun "$FSTYP test filesystem doesn't support online defrag"
+       fi
+       rm -f $testfile $donorfile 2>&1 > /dev/null
+       DEFRAG_PROG="$E4DEFRAG_PROG"
        ;;
     btrfs)
        DEFRAG_PROG="$BTRFS_UTIL_PROG filesystem defragment"