7290 ZFS test suite needs to control what utilities it can run
[unleashed.git] / usr / src / test / zfs-tests / tests / functional / cli_root / zfs_mount / zfs_mount.kshlib
blob41cd9698cc84b1a92d415dd6a78e75e030cfe003
2 # CDDL HEADER START
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
19 # CDDL HEADER END
23 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24 # Use is subject to license terms.
28 # Copyright (c) 2016 by Delphix. All rights reserved.
31 . $STF_SUITE/include/libtest.shlib
32 . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.cfg
34 function force_unmount #dev
36         typeset dev=$1
38         ismounted $dev
39         if (( $? == 0 )); then
40                 log_must zfs $unmountforce $dev
41         fi
42         return 0
45 # Create pool and  ( fs | container | vol ) with the given parameters,
46 # it'll destroy prior exist one that has the same name.
48 function setup_filesystem #disklist #pool #fs #mntpoint #type #vdev
50         typeset disklist=$1
51         typeset pool=$2
52         typeset fs=${3##/}
53         typeset mntpoint=$4
54         typeset type=$5
55         typeset vdev=$6
57         if [[ -z $pool || -z $fs || -z $mntpoint ]]; then
58                 log_note "Missing parameter: (\"$pool\", \"$fs\", \"$mntpoint\")"
59                 return 1
60         fi
62         if is_global_zone && [[ -z $disklist ]] ; then
63                 log_note "Missing disklist."
64                 return 1
65         fi
67         if [[ $vdev != "" && \
68                 $vdev != "mirror" && \
69                 $vdev != "raidz" ]] ; then
71                 log_note "Wrong vdev: (\"$vdev\")"
72                 return 1
73         fi
75         poolexists $pool || \
76                 create_pool $pool $vdev $disklist
78         datasetexists $pool/$fs && \
79                 log_must cleanup_filesystem $pool $fs
81         rmdir $mntpoint > /dev/null 2>&1
82         if [[ ! -d $mntpoint ]]; then
83                 log_must mkdir -p $mntpoint
84         fi
86         case "$type" in
87                 'ctr')  log_must zfs create $pool/$fs
88                         log_must zfs set mountpoint=$mntpoint $pool/$fs
89                         ;;
90                 'vol')  log_must zfs create -V $VOLSIZE $pool/$fs
91                         ;;
92                 *)      log_must zfs create $pool/$fs
93                         log_must zfs set mountpoint=$mntpoint $pool/$fs
94                         ;;
95         esac
97         return 0
100 # Destroy ( fs | container | vol ) with the given parameters.
101 function cleanup_filesystem #pool #fs
103         typeset pool=$1
104         typeset fs=${2##/}
105         typeset mtpt=""
107         if [[ -z $pool || -z $fs ]]; then
108                 log_note "Missing parameter: (\"$pool\", \"$fs\")"
109                 return 1
110         fi
112         if datasetexists "$pool/$fs" ; then
113                 mtpt=$(get_prop mountpoint "$pool/$fs")
114                 log_must zfs destroy -r $pool/$fs
116                 [[ -d $mtpt ]] && \
117                         log_must rm -rf $mtpt
118         else
119                 return 1
120         fi
122         return 0
125 # Make sure 'zfs mount' should display all ZFS filesystems currently mounted.
126 # The results of 'zfs mount' and 'df -F zfs' should be identical.
127 function verify_mount_display
129         typeset fs
131         for fs in $(zfs $mountcmd | awk '{print $1}') ; do
132                 log_must mounted $fs
133         done
134         return 0