87 lines
2.4 KiB
Bash
Executable File
87 lines
2.4 KiB
Bash
Executable File
#!/bin/ksh
|
|
|
|
#
|
|
# This file and its contents are supplied under the terms of the
|
|
# Common Development and Distribution License ("CDDL"), version 1.0.
|
|
# You may only use this file in accordance with the terms of version
|
|
# 1.0 of the CDDL.
|
|
#
|
|
# A full copy of the text of the CDDL should have accompanied this
|
|
# source. A copy of the CDDL is also available via the Internet at
|
|
# http://www.illumos.org/license/CDDL.
|
|
#
|
|
|
|
. $STF_SUITE/include/libtest.shlib
|
|
|
|
#
|
|
# DESCRIPTION:
|
|
# Exercise gang block IO paths for non-encrypted and encrypted datasets.
|
|
#
|
|
|
|
verify_runnable "both"
|
|
log_assert "Verify IO when file system is full and ganging."
|
|
|
|
function cleanup
|
|
{
|
|
log_must set_tunable64 METASLAB_FORCE_GANGING $metaslab_force_ganging
|
|
default_cleanup_noexit
|
|
}
|
|
|
|
log_onexit cleanup
|
|
|
|
default_setup_noexit $DISKS
|
|
|
|
typeset metaslab_force_ganging=$(get_tunable METASLAB_FORCE_GANGING)
|
|
shift=$(random_int_between 15 17)
|
|
log_must set_tunable64 METASLAB_FORCE_GANGING $((2**$shift))
|
|
|
|
keyfile=/$TESTPOOL/keyencfods
|
|
log_must eval "echo 'password' > $keyfile"
|
|
bs=1024k
|
|
count=512
|
|
|
|
log_must dd if=/dev/urandom of=$TESTDIR/data bs=$bs count=$count
|
|
data_checksum=$(sha256digest $TESTDIR/data)
|
|
|
|
# Test common large block configuration.
|
|
log_must zfs create -o recordsize=1m -o primarycache=metadata $TESTPOOL/gang
|
|
mntpnt=$(get_prop mountpoint $TESTPOOL/gang)
|
|
|
|
log_must dd if=$TESTDIR/data of=$mntpnt/file bs=$bs count=$count
|
|
sync_pool $TESTPOOL
|
|
log_must dd if=$mntpnt/file of=$TESTDIR/out bs=$bs count=$count
|
|
out_checksum=$(sha256digest $TESTDIR/out)
|
|
|
|
if [[ "$data_checksum" != "$out_checksum" ]]; then
|
|
log_fail "checksum mismatch ($data_checksum != $out_checksum)"
|
|
fi
|
|
|
|
log_must rm -f $TESTDIR/out
|
|
log_must zfs destroy $TESTPOOL/gang
|
|
|
|
# Test common large block configuration with encryption.
|
|
log_must zfs create \
|
|
-o recordsize=1m \
|
|
-o primarycache=metadata \
|
|
-o compression=off \
|
|
-o encryption=on \
|
|
-o keyformat=passphrase \
|
|
-o keylocation=file://$keyfile \
|
|
-o copies=2 \
|
|
$TESTPOOL/gang
|
|
mntpnt=$(get_prop mountpoint $TESTPOOL/gang)
|
|
|
|
log_must dd if=$TESTDIR/data of=$mntpnt/file bs=$bs count=$count
|
|
sync_pool $TESTPOOL
|
|
log_must dd if=$mntpnt/file of=$TESTDIR/out bs=$bs count=$count
|
|
out_checksum=$(sha256digest $TESTDIR/out)
|
|
|
|
if [[ "$data_checksum" != "$out_checksum" ]]; then
|
|
log_fail "checksum mismatch ($data_checksum != $out_checksum)"
|
|
fi
|
|
|
|
log_must rm -f $TESTDIR/out
|
|
log_must zfs destroy $TESTPOOL/gang
|
|
|
|
log_pass "Verified IO when file system is full and ganging."
|