Fix zfs_destroy_001_pos.ksh

Due to how the Linux VFS was designed busy mount points
cannot be destroyed even when given the force option.  Update
the zfs_destroy_001_pos test case to expect this behavior when
running under Linux.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: candychencan <chen.can2@zte.com.cn>
Closes #5132
This commit is contained in:
candychencan 2016-09-22 04:51:53 +08:00 committed by Brian Behlendorf
parent 66e93f5e4e
commit 84347be098
2 changed files with 22 additions and 10 deletions

View File

@ -95,7 +95,6 @@ tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos',
'zfs_create_013_pos'] 'zfs_create_013_pos']
# DISABLED: # DISABLED:
# zfs_destroy_001_pos - busy mountpoint behavior
# zfs_destroy_005_neg - busy mountpoint behavior # zfs_destroy_005_neg - busy mountpoint behavior
# zfs_destroy_008_pos - busy mountpoint behavior # zfs_destroy_008_pos - busy mountpoint behavior
# zfs_destroy_009_pos - busy mountpoint behavior # zfs_destroy_009_pos - busy mountpoint behavior
@ -104,9 +103,9 @@ tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos',
# zfs_destroy_012_pos - busy mountpoint behavior # zfs_destroy_012_pos - busy mountpoint behavior
# zfs_destroy_013_neg - busy mountpoint behavior # zfs_destroy_013_neg - busy mountpoint behavior
[tests/functional/cli_root/zfs_destroy] [tests/functional/cli_root/zfs_destroy]
tests = ['zfs_destroy_002_pos', 'zfs_destroy_003_pos', 'zfs_destroy_004_pos', tests = ['zfs_destroy_001_pos', 'zfs_destroy_002_pos', 'zfs_destroy_003_pos',
'zfs_destroy_006_neg', 'zfs_destroy_007_neg', 'zfs_destroy_014_pos', 'zfs_destroy_004_pos', 'zfs_destroy_006_neg', 'zfs_destroy_007_neg',
'zfs_destroy_015_pos', 'zfs_destroy_016_pos'] 'zfs_destroy_014_pos', 'zfs_destroy_015_pos', 'zfs_destroy_016_pos']
# DISABLED: # DISABLED:
# zfs_get_004_pos - nested pools # zfs_get_004_pos - nested pools

View File

@ -126,7 +126,7 @@ function test_n_check
"(pidlist: $pidlist)" "(pidlist: $pidlist)"
[[ -z $pidlist ]] && \ [[ -z $pidlist ]] && \
log_fail "Failure from $MKBUSY" log_fail "Failure from $MKBUSY"
log_must $ZFS destroy -rR $dtst log_must_busy $ZFS destroy -rR $dtst
log_must $ZFS snapshot $dtst log_must $ZFS snapshot $dtst
fi fi
;; ;;
@ -137,13 +137,24 @@ function test_n_check
log_note "$MKBUSY $mpt_dir (pidlist: $pidlist)" log_note "$MKBUSY $mpt_dir (pidlist: $pidlist)"
[[ -z $pidlist ]] && \ [[ -z $pidlist ]] && \
log_fail "Failure from $MKBUSY" log_fail "Failure from $MKBUSY"
log_must $ZFS destroy -rR $dtst if is_linux ; then
log_must $ZFS snapshot $dtst log_mustnot $ZFS destroy -rR $dtst
else
log_must $ZFS destroy -rR $dtst
log_must $ZFS snapshot $dtst
fi
fi fi
;; ;;
*) log_fail "Unsupported dataset: '$dtst'." *) log_fail "Unsupported dataset: '$dtst'."
esac esac
# Kill any lingering instances of mkbusy, and clear the list.
if is_linux ; then
[[ -z $pidlist ]] || log_must $KILL -TERM $pidlist
pidlist=""
log_mustnot $PGREP -fl $MKBUSY
fi
# Firstly, umount ufs filesystem which was created by zfs volume. # Firstly, umount ufs filesystem which was created by zfs volume.
if is_global_zone; then if is_global_zone; then
log_must $UMOUNT -f $TESTDIR1 log_must $UMOUNT -f $TESTDIR1
@ -153,9 +164,11 @@ function test_n_check
log_must $ZFS destroy $opt $dtst log_must $ZFS destroy $opt $dtst
# Kill any lingering instances of mkbusy, and clear the list. # Kill any lingering instances of mkbusy, and clear the list.
[[ -z $pidlist ]] || log_must $KILL -TERM $pidlist if ! is_linux ; then
pidlist="" [[ -z $pidlist ]] || log_must $KILL -TERM $pidlist
log_mustnot $PGREP -fl $MKBUSY pidlist=""
log_mustnot $PGREP -fl $MKBUSY
fi
case $dtst in case $dtst in
$CTR) check_dataset datasetnonexists \ $CTR) check_dataset datasetnonexists \