mirror_zfs/tests/zfs-tests/tests/functional/zvol/zvol_common.shlib
Brian Behlendorf 8c54ddd33a Enable additional test cases
Enable additional test cases, in most cases this required a few
minor modifications to the test scripts.  In a few cases a real
bug was uncovered and fixed.  And in a handful of cases where pools
are layered on pools the test case will be skipped until this is
supported.  Details below for each test case.

* zpool_add_004_pos - Skip test on Linux until adding zvols to pools
  is fully supported and deadlock free.

* zpool_add_005_pos.ksh - Skip dumpadm portion of the test which isn't
  relevant for Linux.  The find_vfstab_dev, find_mnttab_dev, and
  save_dump_dev functions were updated accordingly for Linux.  Add
  O_EXCL to the in-use check to prevent the -f (force) option from
  working for mounted filesystems and improve the resulting error.

* zpool_add_006_pos - Update test case such that it doesn't depend
  on nested pools.  Switch to truncate from mkfile to reduce space
  requirements and speed up the test case.

* zpool_clear_001_pos - Speed up test case by filling filesystem to
  25% capacity.

* zpool_create_002_pos, zpool_create_004_pos - Use sparse files for
  file vdevs in order to avoid increasing the partition size.

* zpool_create_006_pos - 6ba1ce9 allows raidz+mirror configs with
  similar redundancy.  Updating the valid_args and forced_args cases.

* zpool_create_008_pos - Disable overlapping partition portion.

* zpool_create_011_neg - Fix to correctly create the extra partition.
  Modified zpool_vdev.c to use fstat64_blk() wrapper which includes
  the st_size even for block devices.

* zpool_create_012_neg - Updated to properly find swap devices.

* zpool_create_014_neg, zpool_create_015_neg - Updated to use
  swap_setup() and swap_cleanup() wrappers which do the right thing
  on Linux and Illumos.  Removed '-n' option which succeeds under
  Linux due to differences in the in-use checks.

* zpool_create_016_pos.ksh - Skipped test case isn't useful.

* zpool_create_020_pos - Added missing / to cleanup() function.
  Remove cache file prior to test to ensure a clean environment
  and avoid false positives.

* zpool_destroy_001_pos - Removed test case which creates a pool on
  a zvol.  This is more likely to deadlock under Linux and has never
  been completely supported on any platform.

* zpool_destroy_002_pos - 'zpool destroy -f' is unsupported on Linux.
  Mount point must not be busy in order to unmount them.

* zfs_destroy_001_pos - Handle EBUSY error which can occur with
  volumes when racing with udev.

* zpool_expand_001_pos, zpool_expand_003_neg - Skip test on Linux
  until adding zvols to pools is fully supported and deadlock free.
  The test could be modified to use loop-back devices but it would
  be preferable to use the test case as is for improved coverage.

* zpool_export_004_pos - Updated test case to such that it doesn't
  depend on nested pools.  Normal file vdev under /var/tmp are fine.

* zpool_import_all_001_pos - Updated to skip partition 1, which is
  known as slice 2, on Illumos.  This prevents overwriting the
  default TESTPOOL which was causing the failure.

* zpool_import_002_pos, zpool_import_012_pos - No changes needed.

* zpool_remove_003_pos - No changes needed

* zpool_upgrade_002_pos, zpool_upgrade_004_pos - Root cause addressed
  by upstream OpenZFS commit 3b7f360.

* zpool_upgrade_007_pos - Disabled in test case due to known failure.
  Opened issue https://github.com/zfsonlinux/zfs/issues/6112

* zvol_misc_002_pos - Updated to to use ext2.

* zvol_misc_001_neg, zvol_misc_003_neg, zvol_misc_004_pos,
  zvol_misc_005_neg, zvol_misc_006_pos - Moved to skip list, these
  test case could be updated to use Linux's crash dump facility.

* zvol_swap_* - Updated to use swap_setup/swap_cleanup helpers.
  File creation switched from /tmp to /var/tmp.  Enabled minimal
  useful tests for Linux, skip test cases which aren't applicable.

Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #3484
Issue #5634
Issue #2437
Issue #5202
Issue #4034
Closes #6095
2017-05-11 14:27:57 -07:00

137 lines
3.0 KiB
Plaintext

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
#
. $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/zvol/zvol.cfg
#
# Create a simple zvol volume
#
# Where disk_device: is the name of the disk to be used
# volume_size: is the size of the volume, e.g. 2G
# block_size: is the block size of the volume
#
function default_zvol_setup # disk_device volume_size block_size
{
typeset disk=$1
typeset size=$2
typeset blocksize=$3
typeset savedumpdev
typeset -i output
typeset create_args
create_pool $TESTPOOL "$disk"
if [ -n "$blocksize" ]; then
create_args="-b $blocksize"
fi
log_must zfs create $create_args -V $size $TESTPOOL/$TESTVOL
block_device_wait
}
#
# Destroy the default zvol which was setup using
# default_zvol_setup().
#
function default_zvol_cleanup
{
if datasetexists $TESTPOOL/$TESTVOL ; then
log_must zfs destroy $TESTPOOL/$TESTVOL
fi
destroy_pool $TESTPOOL
}
function get_dumpdevice
{
typeset ret=$(dumpadm | grep "Dump device:" | awk '{print $3}')
echo $ret
}
function set_dumpsize
{
typeset volume=$1
if [[ -z $volume ]] ; then
log_note "No volume specified."
return 1
fi
log_must zfs set volsize=64m $volume
if ! is_linux; then
output=$(dumpadm -d /dev/zvol/dsk/$volume 2>&1 | \
tail -1 | awk '{print $3}')
if [[ -n $output ]]; then
(( output = output / 1024 / 1024 ))
(( output = output + output / 5 ))
log_must zfs set volsize=${output}m $volume
fi
fi
return 0
}
function safe_dumpadm
{
typeset device=$1
if [[ -z $device || $device == "none" ]] ; then
log_note "No dump device volume specified."
return 1
fi
if [[ $device == "${ZVOL_DEVDIR}/"* ]] ; then
typeset volume=${device#${ZVOL_DEVDIR}/}
set_dumpsize $volume
log_must dumpadm -d $device
else
log_must swapadd
if ! is_swap_inuse $device ; then
log_must swap -a $device
fi
log_must dumpadm -d swap
fi
}
function is_zvol_dumpified
{
typeset volume=$1
if [[ -z $volume ]] ; then
log_note "No volume specified."
return 1
fi
zdb -dddd $volume 2 | grep "dumpsize" > /dev/null 2>&1
return $?
}