exit 1
}
+# convert urandom incompressible data to compressible text data
+_ddt()
+{
+ cat /dev/urandom | od | dd iflag=fullblock ${*}
+}
+
#takes files, randomdata
_nfiles()
{
if [ $size -gt 0 ]; then
if [ "$2" == "false" ]; then
dd if=/dev/zero of=$file bs=1024 count=$size 2>&1 | _filter_dd
+ elif [ "$2" == "comp" ]; then
+ _ddt of=$file bs=1024 count=$size 2>&1 | _filter_dd
else
dd if=/dev/urandom of=$file bs=1024 count=$size 2>&1 | _filter_dd
fi
depth=2 # depth of tree from root to leaves
verbose=false
root=root # path of initial root of directory tree
- randomdata=false # -x data type urandom or zero
+ randomdata=false # -x data type urandom, zero or compressible
OPTIND=1
- while getopts "d:f:n:r:s:v:x" c
+ while getopts "d:f:n:r:s:v:x:c" c
do
case $c in
d) depth=$OPTARG;;
v) verbose=true;;
r) root=$OPTARG;;
x) randomdata=true;;
+ c) randomdata=comp;;
esac
done
do
FSIZE=`stat -t $i | cut -d" " -f2`
dd if=$i of=/dev/null obs=$FSIZE count=1 status=noxfer 2>/dev/null &
- dd if=/dev/urandom of=$i obs=$FSIZE count=1 status=noxfer 2>/dev/null &
+ _ddt of=$i obs=$FSIZE count=1 status=noxfer 2>/dev/null &
done
wait $!
}
NBLK=`stat -c "%b" $i`
FALLOC=$(($BLKS * $NBLK))
WS=$(($FALLOC - $FSIZE))
- dd if=/dev/urandom of=$i oseek=$FSIZE obs=$WS count=1 status=noxfer 2>/dev/null &
+ _ddt of=$i oseek=$FSIZE obs=$WS count=1 status=noxfer 2>/dev/null &
done
wait $!
}
firstvol="$SCRATCH_MNT/sv1"
$BTRFS_UTIL_PROG subvolume create $firstvol > /dev/null || _fail "btrfs subvolume create $firstvol failed"
dirp=`mktemp -duq $firstvol/dir.XXXXXX`
-_populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 -x
+_populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 -c
SNAPNAME=0
_create_snap $firstvol
_save_checksum $firstvol $tmp.sv1.sum
_scratch_pool_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed"
_scratch_mount
dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX`
- _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10
+ _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 -c
_scratch_unmount
}
_scratch_pool_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed"
_scratch_mount
dirp=`mktemp -duq $SCRATCH_MNT/dir.XXXXXX`
- _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10
+ _populate_fs -n 1 -f 20 -d 10 -r $dirp -s 10 -c
_scratch_unmount
}
mkdir $work_dir/testdir
mkdir $work_dir/testdir/1/
mkdir $work_dir/testdir/2/
-dd if=/dev/urandom of=$work_dir/testdir/aa count=16 > /dev/null 2>&1
-dd if=/dev/urandom of=$work_dir/testdir/bb count=16 > /dev/null 2>&1
+_ddt of=$work_dir/testdir/aa count=16 > /dev/null 2>&1
+_ddt of=$work_dir/testdir/bb count=16 > /dev/null 2>&1
mkdir $work_dir/snapshots
$BTRFS_UTIL_PROG subvolume snapshot -r $work_dir $work_dir/snapshots/backup2 \
# 20K extents in the data chunk and fill up metadata with inline
# extents.
for i in `seq 1 500`; do
- dd if=/dev/urandom of=$SCRATCH_MNT/l$i bs=16385 count=1
- dd if=/dev/urandom of=$SCRATCH_MNT/s$i bs=3800 count=1
+ _ddt of=$SCRATCH_MNT/l$i bs=16385 count=1
+ _ddt of=$SCRATCH_MNT/s$i bs=3800 count=1
done > /dev/null 2>&1
- # /dev/urandom is slow but has the benefit that the generated
- # contents does not shrink during compression.
# Generate a template once and quickly copy it multiple times.
- # Obviously with online deduplication this will not work anymore.
- dd if=/dev/urandom of=$SCRATCH_MNT/t0 bs=1M count=1 > /dev/null 2>&1
+ _ddt of=$SCRATCH_MNT/t0 bs=1M count=1 > /dev/null 2>&1
if [ "${quick}Q" = "thoroughQ" ]; then
# The intention of this "thorough" test is to increase
# generate some (slow) background traffic in parallel to the
# replace operation. It is not a problem if cat fails early
# with ENOSPC.
- cat /dev/urandom > $SCRATCH_MNT/noise 2>> $seqres.full &
+ cat /dev/urandom | od > $SCRATCH_MNT/noise 2>> $seqres.full &
noise_pid=$!
if [ "${with_cancel}Q" = "cancelQ" ]; then
$BTRFS_UTIL_PROG subvolume create $TEST_DIR/$tmp_dir/send \
> $seqres.full 2>&1 || _fail "failed subvolume create"
-dd if=/dev/urandom of=$TEST_DIR/$tmp_dir/send/foo bs=1M count=10 >> $seqres.full \
+_ddt of=$TEST_DIR/$tmp_dir/send/foo bs=1M count=10 >> $seqres.full \
2>&1 || _fail "dd failed"
$BTRFS_UTIL_PROG subvolume snapshot -r $TEST_DIR/$tmp_dir/send \
$TEST_DIR/$tmp_dir/snap >> $seqres.full 2>&1 || _fail "failed snap"
_run_btrfs_util_prog quota enable $SCRATCH_MNT
subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a)
_run_btrfs_util_prog qgroup limit 5M 0/$subvolid $SCRATCH_MNT
- dd if=/dev/urandom of=$SCRATCH_MNT/a/file bs=10M count=1 >> \
- $seqres.full 2>&1
+ _ddt of=$SCRATCH_MNT/a/file bs=10M count=1 >> $seqres.full 2>&1
[ $? -ne 0 ] || _fail "quota should have limited us"
}
_run_btrfs_util_prog quota enable $SCRATCH_MNT
subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a)
_run_btrfs_util_prog qgroup limit 5M 0/$subvolid $SCRATCH_MNT
- dd if=/dev/urandom of=$SCRATCH_MNT/a/file bs=4M count=1 >> \
- $seqres.full 2>&1
+ _ddt of=$SCRATCH_MNT/a/file bs=4M count=1 >> $seqres.full 2>&1
[ $? -eq 0 ] || _fail "should have been allowed to write"
}
local missing_dev_id=`$BTRFS_UTIL_PROG fi show $SCRATCH_MNT | grep $missing_dev | awk '{print $2}'`
# get some data on the filesystem so there's something to replace
- dd if=/dev/urandom of="$SCRATCH_MNT"/file1 bs=1M count=1 \
- >>$seqres.full 2>&1
- dd if=/dev/urandom of="$SCRATCH_MNT"/file2 bs=1M count=2 \
- >>$seqres.full 2>&1
- dd if=/dev/urandom of="$SCRATCH_MNT"/file3 bs=1M count=4 \
- >>$seqres.full 2>&1
+ _ddt of="$SCRATCH_MNT"/file1 bs=1M count=1 >> $seqres.full 2>&1
+ _ddt of="$SCRATCH_MNT"/file2 bs=1M count=2 >> $seqres.full 2>&1
+ _ddt of="$SCRATCH_MNT"/file3 bs=1M count=4 >> $seqres.full 2>&1
# nuke a device and remount in degraded mode
_scratch_unmount