mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-06-24 18:18:02 +03:00

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 commit3b7f360
. * 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
137 lines
3.0 KiB
Plaintext
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 $?
|
|
}
|