/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_015_neg.ksh

https://github.com/adilger/zfs · Korn Shell · 91 lines · 32 code · 13 blank · 46 comment · 5 complexity · dfffd51be2c16ab3a2ca8414f71b17a9 MD5 · raw file

  1. #!/bin/ksh -p
  2. #
  3. # CDDL HEADER START
  4. #
  5. # The contents of this file are subject to the terms of the
  6. # Common Development and Distribution License (the "License").
  7. # You may not use this file except in compliance with the License.
  8. #
  9. # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10. # or http://www.opensolaris.org/os/licensing.
  11. # See the License for the specific language governing permissions
  12. # and limitations under the License.
  13. #
  14. # When distributing Covered Code, include this CDDL HEADER in each
  15. # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16. # If applicable, add the following below this CDDL HEADER, with the
  17. # fields enclosed by brackets "[]" replaced with your own identifying
  18. # information: Portions Copyright [yyyy] [name of copyright owner]
  19. #
  20. # CDDL HEADER END
  21. #
  22. #
  23. # Copyright 2009 Sun Microsystems, Inc. All rights reserved.
  24. # Use is subject to license terms.
  25. #
  26. #
  27. # Copyright (c) 2012, 2016 by Delphix. All rights reserved.
  28. #
  29. . $STF_SUITE/include/libtest.shlib
  30. . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib
  31. #
  32. #
  33. # DESCRIPTION:
  34. # 'zpool create' will fail with zfs vol device in swap
  35. #
  36. #
  37. # STRATEGY:
  38. # 1. Create a zpool
  39. # 2. Create a zfs vol on zpool
  40. # 3. Add this zfs vol device to swap
  41. # 4. Try to create a new pool with devices in swap
  42. # 5. Verify the creation is failed.
  43. #
  44. verify_runnable "global"
  45. function cleanup
  46. {
  47. # cleanup zfs pool and dataset
  48. if datasetexists $vol_name; then
  49. swap_cleanup ${ZVOL_DEVDIR}/${vol_name}
  50. fi
  51. for pool in $TESTPOOL1 $TESTPOOL; do
  52. poolexists $pool && destroy_pool $pool
  53. done
  54. }
  55. unset NOINUSE_CHECK
  56. typeset vol_name=$TESTPOOL/$TESTVOL
  57. log_assert "'zpool create' should fail with zfs vol device in swap."
  58. log_onexit cleanup
  59. #
  60. # use zfs vol device in swap to create pool which should fail.
  61. #
  62. create_pool $TESTPOOL $DISK0
  63. log_must zfs create -V 100m $vol_name
  64. block_device_wait
  65. swap_setup ${ZVOL_DEVDIR}/$vol_name
  66. if is_freebsd; then
  67. typeset -a opts=("" "-f")
  68. else
  69. typeset -a opts=("-n" "" "-f")
  70. fi
  71. for opt in "${opts[@]}"; do
  72. log_mustnot zpool create $opt $TESTPOOL1 ${ZVOL_DEVDIR}/${vol_name}
  73. done
  74. # cleanup
  75. swap_cleanup ${ZVOL_DEVDIR}/${vol_name}
  76. log_must_busy zfs destroy $vol_name
  77. log_must zpool destroy $TESTPOOL
  78. log_pass "'zpool create' passed as expected with inapplicable scenario."