Author: avg
Date: Thu Mar 15 12:40:43 2018
New Revision: 330993
URL: https://svnweb.freebsd.org/changeset/base/330993

Log:
  zfs test suite: align zfs_destroy_005_neg: with upstream
  
  The change is to account for a different order in which the recursive
  destroy may be attempted.  If we first try a dataset that can be destroyed
  then it will be destroyed, but if we first try a dataset that cannot be
  destroyed then we will not attempt to destroy the other dataset.

Modified:
  head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh

Modified: 
head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh
==============================================================================
--- head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh  
Thu Mar 15 12:35:22 2018        (r330992)
+++ head/tests/sys/cddl/zfs/tests/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh  
Thu Mar 15 12:40:43 2018        (r330993)
@@ -121,10 +121,30 @@ negative_test "-r -rf" "$CTR $FS $VOL"
 typeset mtpt_dir=$(get_prop mountpoint $FS)
 make_dir_busy $mtpt_dir
 negative_test "-R -rR" $CTR
-check_dataset datasetexists $CTR $FS $VOL $VOLSNAP $VOLCLONE
-log_must datasetnonexists $FSSNAP $FSCLONE
 
 #
+# Checking the outcome of the test above is tricky, because the order in
+# which datasets are destroyed is not deterministic. Both $FS and $VOL are
+# busy, and the remaining datasets will be different depending on whether we
+# tried (and failed) to delete $FS or $VOL first.
+
+# The following datasets will exist independent of the order
+check_dataset datasetexists $CTR $FS $VOL
+
+if datasetexists $VOLSNAP && datasetnonexists $FSSNAP; then
+       # The recursive destroy failed on $FS
+       check_dataset datasetnonexists $FSSNAP $FSCLONE
+       check_dataset datasetexists $VOLSNAP $VOLCLONE
+elif datasetexists $FSSNAP && datasetnonexists $VOLSNAP; then
+       # The recursive destroy failed on $VOL
+       check_dataset datasetnonexists $VOLSNAP $VOLCLONE
+       check_dataset datasetexists $FSSNAP $FSCLONE
+else
+       log_must zfs list -rtall
+       log_fail "Unexpected datasets remaining"
+fi
+
+#
 # Create the clones for test environment, then verify 'zfs destroy $FS'
 # failed without '-f'. 
 #
@@ -148,7 +168,17 @@ if is_global_zone; then
        make_dir_busy $TESTDIR1
        negative_test "-R -rR" $CTR
        log_must datasetexists $CTR $VOL
-       log_must datasetnonexists $FS $FSSNAP $FSCLONE $VOLSNAP $VOLCLONE
+       log_must datasetnonexists $VOLSNAP $VOLCLONE
+
+       # Here again, the non-determinism of destroy order is a factor. $FS,
+       # $FSSNAP and $FSCLONE will still exist here iff we attempted to destroy
+       # $VOL (and failed) first. So check that either all of the datasets are
+       # present, or they're all gone.
+       if datasetexists $FS; then
+               check_dataset datasetexists $FS $FSSNAP $FSCLONE
+       else
+               check_dataset datasetnonexists $FS $FSSNAP $FSCLONE
+       fi
 
        #
        # Create the clones for test environment and make the volume busy.
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to