7290 ZFS test suite needs to control what utilities it can run
[unleashed.git] / usr / src / test / zfs-tests / tests / functional / cli_root / zfs_unshare / zfs_unshare_003_pos.ksh
bloba16a58f8139830a6dac714d547cdba11d83496a3
1 #!/bin/ksh -p
3 # CDDL HEADER START
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.
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.
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]
20 # CDDL HEADER END
24 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
25 # Use is subject to license terms.
29 # Copyright (c) 2016 by Delphix. All rights reserved.
32 . $STF_SUITE/include/libtest.shlib
35 # DESCRIPTION:
36 # Verify that a file system and its dependant are unshared when turn off sharenfs
37 # property.
39 # STRATEGY:
40 # 1. Create a file system
41 # 2. Set the sharenfs property on the file system
42 # 3. Create a snapshot
43 # 4. Verify that both are shared
44 # 5. Turn off the sharenfs property
45 # 6. Verify that both are unshared.
48 verify_runnable "global"
50 function cleanup
52 if snapexists $TESTPOOL/$TESTFS@snapshot; then
53 log_must zfs destroy $TESTPOOL/$TESTFS@snapshot
56 log_must zfs set sharenfs=off $TESTPOOL/$TESTFS
60 # Main test routine.
62 # Given a mountpoint and file system this routine will attempt
63 # unshare the mountpoint and then verify a snapshot of the mounpoint
64 # is also unshared.
66 function test_snap_unshare # <mntp> <filesystem>
68 typeset mntp=$1
69 typeset filesystem=$2
70 typeset prop_value
72 prop_value=$(get_prop "sharenfs" $filesystem)
74 if [[ $prop_value == "off" ]]; then
75 is_shared $mntp || unshare -F nfs $mntp
76 log_must zfs set sharenfs=on $filesystem
79 log_must zfs set sharenfs=off $filesystem
81 not_shared $mntp || \
82 log_fail "File system $filesystem is shared (set sharenfs)."
84 not_shared $mntp@snapshot || \
85 log_fail "Snapshot $mntpt@snapshot is shared (set sharenfs)."
88 log_assert "Verify that a file system and its dependant are unshared."
89 log_onexit cleanup
91 log_must zfs snapshot $TESTPOOL/$TESTFS@snapshot
92 test_snap_unshare $TESTDIR $TESTPOOL/$TESTFS
94 log_pass "A file system and its dependant are both unshared as expected."