]> granicus.if.org Git - zfs/commitdiff
Fix zfs_destroy_001_pos.ksh
authorcandychencan <chen.can2@zte.com.cn>
Wed, 21 Sep 2016 20:51:53 +0000 (04:51 +0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 21 Sep 2016 20:51:53 +0000 (13:51 -0700)
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

tests/runfiles/linux.run
tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_001_pos.ksh

index b31724a2faae84a941c28a60f47c3cef5f040c57..7d55a25a13189b7a2982895c6eefffd44d6678f7 100644 (file)
@@ -95,7 +95,6 @@ tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos',
     'zfs_create_013_pos']
 
 # DISABLED:
-# zfs_destroy_001_pos - busy mountpoint behavior
 # zfs_destroy_005_neg - busy mountpoint behavior
 # zfs_destroy_008_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_013_neg - busy mountpoint behavior
 [tests/functional/cli_root/zfs_destroy]
-tests = ['zfs_destroy_002_pos', 'zfs_destroy_003_pos', 'zfs_destroy_004_pos',
-    'zfs_destroy_006_neg', 'zfs_destroy_007_neg', 'zfs_destroy_014_pos',
-    'zfs_destroy_015_pos', 'zfs_destroy_016_pos']
+tests = ['zfs_destroy_001_pos', 'zfs_destroy_002_pos', 'zfs_destroy_003_pos',
+    'zfs_destroy_004_pos', 'zfs_destroy_006_neg', 'zfs_destroy_007_neg',
+    'zfs_destroy_014_pos', 'zfs_destroy_015_pos', 'zfs_destroy_016_pos']
 
 # DISABLED:
 # zfs_get_004_pos - nested pools
index 4aef51e0aedb1ef8aced06fc4b9bd59d8ba27cfd..e942eaebf4b804f72960493ea745829b844d74ae 100755 (executable)
@@ -126,7 +126,7 @@ function test_n_check
                                    "(pidlist: $pidlist)"
                                [[ -z $pidlist ]] && \
                                    log_fail "Failure from $MKBUSY"
-                               log_must $ZFS destroy -rR $dtst
+                               log_must_busy $ZFS destroy -rR $dtst
                                log_must $ZFS snapshot $dtst
                        fi
                        ;;
@@ -137,13 +137,24 @@ function test_n_check
                                log_note "$MKBUSY $mpt_dir (pidlist: $pidlist)"
                                [[ -z $pidlist ]] && \
                                    log_fail "Failure from $MKBUSY"
-                               log_must $ZFS destroy -rR $dtst
-                               log_must $ZFS snapshot $dtst
+                               if is_linux ; then
+                                       log_mustnot $ZFS destroy -rR $dtst
+                               else
+                                       log_must $ZFS destroy -rR $dtst
+                                       log_must $ZFS snapshot $dtst
+                               fi
                        fi
                        ;;
                *)      log_fail "Unsupported dataset: '$dtst'."
        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.
        if is_global_zone; then
                log_must $UMOUNT -f $TESTDIR1
@@ -153,9 +164,11 @@ function test_n_check
        log_must $ZFS destroy $opt $dtst
 
        # Kill any lingering instances of mkbusy, and clear the list.
-       [[ -z $pidlist ]] || log_must $KILL -TERM $pidlist
-       pidlist=""
-       log_mustnot $PGREP -fl $MKBUSY
+       if ! is_linux ; then
+               [[ -z $pidlist ]] || log_must $KILL -TERM $pidlist
+               pidlist=""
+               log_mustnot $PGREP -fl $MKBUSY
+       fi
 
        case $dtst in
                $CTR)   check_dataset datasetnonexists \