1d583b39bSJohn Wren Kennedy# 2d583b39bSJohn Wren Kennedy# CDDL HEADER START 3d583b39bSJohn Wren Kennedy# 4d583b39bSJohn Wren Kennedy# The contents of this file are subject to the terms of the 5d583b39bSJohn Wren Kennedy# Common Development and Distribution License (the "License"). 6d583b39bSJohn Wren Kennedy# You may not use this file except in compliance with the License. 7d583b39bSJohn Wren Kennedy# 8d583b39bSJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9d583b39bSJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing. 10d583b39bSJohn Wren Kennedy# See the License for the specific language governing permissions 11d583b39bSJohn Wren Kennedy# and limitations under the License. 12d583b39bSJohn Wren Kennedy# 13d583b39bSJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each 14d583b39bSJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15d583b39bSJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the 16d583b39bSJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying 17d583b39bSJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner] 18d583b39bSJohn Wren Kennedy# 19d583b39bSJohn Wren Kennedy# CDDL HEADER END 20d583b39bSJohn Wren Kennedy# 21d583b39bSJohn Wren Kennedy 22d583b39bSJohn Wren Kennedy# 23d583b39bSJohn Wren Kennedy# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24d583b39bSJohn Wren Kennedy# Use is subject to license terms. 25d583b39bSJohn Wren Kennedy# 26d583b39bSJohn Wren Kennedy 271d32ba66SJohn Wren Kennedy# 28*591e0e13SSebastien Roy# Copyright (c) 2017 by Delphix. All rights reserved. 291d32ba66SJohn Wren Kennedy# 301d32ba66SJohn Wren Kennedy 31d583b39bSJohn Wren Kennedy. $STF_SUITE/include/libtest.shlib 32d583b39bSJohn Wren Kennedy. $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.cfg 33d583b39bSJohn Wren Kennedy 34d583b39bSJohn Wren Kennedyfunction force_unmount #dev 35d583b39bSJohn Wren Kennedy{ 36d583b39bSJohn Wren Kennedy typeset dev=$1 37d583b39bSJohn Wren Kennedy 38d583b39bSJohn Wren Kennedy ismounted $dev 39d583b39bSJohn Wren Kennedy if (( $? == 0 )); then 401d32ba66SJohn Wren Kennedy log_must zfs $unmountforce $dev 41d583b39bSJohn Wren Kennedy fi 42d583b39bSJohn Wren Kennedy return 0 43d583b39bSJohn Wren Kennedy} 44d583b39bSJohn Wren Kennedy 45d583b39bSJohn Wren Kennedy# Create pool and ( fs | container | vol ) with the given parameters, 46d583b39bSJohn Wren Kennedy# it'll destroy prior exist one that has the same name. 47d583b39bSJohn Wren Kennedy 48d583b39bSJohn Wren Kennedyfunction setup_filesystem #disklist #pool #fs #mntpoint #type #vdev 49d583b39bSJohn Wren Kennedy{ 50d583b39bSJohn Wren Kennedy typeset disklist=$1 51d583b39bSJohn Wren Kennedy typeset pool=$2 52d583b39bSJohn Wren Kennedy typeset fs=${3##/} 53d583b39bSJohn Wren Kennedy typeset mntpoint=$4 54d583b39bSJohn Wren Kennedy typeset type=$5 55d583b39bSJohn Wren Kennedy typeset vdev=$6 56d583b39bSJohn Wren Kennedy 57d583b39bSJohn Wren Kennedy if [[ -z $pool || -z $fs || -z $mntpoint ]]; then 58d583b39bSJohn Wren Kennedy log_note "Missing parameter: (\"$pool\", \"$fs\", \"$mntpoint\")" 59d583b39bSJohn Wren Kennedy return 1 60d583b39bSJohn Wren Kennedy fi 61d583b39bSJohn Wren Kennedy 62d583b39bSJohn Wren Kennedy if is_global_zone && [[ -z $disklist ]] ; then 63d583b39bSJohn Wren Kennedy log_note "Missing disklist." 64d583b39bSJohn Wren Kennedy return 1 65d583b39bSJohn Wren Kennedy fi 66d583b39bSJohn Wren Kennedy 67d583b39bSJohn Wren Kennedy if [[ $vdev != "" && \ 68d583b39bSJohn Wren Kennedy $vdev != "mirror" && \ 69d583b39bSJohn Wren Kennedy $vdev != "raidz" ]] ; then 70d583b39bSJohn Wren Kennedy 71d583b39bSJohn Wren Kennedy log_note "Wrong vdev: (\"$vdev\")" 72d583b39bSJohn Wren Kennedy return 1 73d583b39bSJohn Wren Kennedy fi 74d583b39bSJohn Wren Kennedy 75d583b39bSJohn Wren Kennedy poolexists $pool || \ 76d583b39bSJohn Wren Kennedy create_pool $pool $vdev $disklist 77d583b39bSJohn Wren Kennedy 78d583b39bSJohn Wren Kennedy datasetexists $pool/$fs && \ 79d583b39bSJohn Wren Kennedy log_must cleanup_filesystem $pool $fs 80d583b39bSJohn Wren Kennedy 811d32ba66SJohn Wren Kennedy rmdir $mntpoint > /dev/null 2>&1 82d583b39bSJohn Wren Kennedy if [[ ! -d $mntpoint ]]; then 831d32ba66SJohn Wren Kennedy log_must mkdir -p $mntpoint 84d583b39bSJohn Wren Kennedy fi 85d583b39bSJohn Wren Kennedy 86d583b39bSJohn Wren Kennedy case "$type" in 87*591e0e13SSebastien Roy 'ctr') log_must zfs create -o mountpoint=$mntpoint $pool/$fs 88d583b39bSJohn Wren Kennedy ;; 891d32ba66SJohn Wren Kennedy 'vol') log_must zfs create -V $VOLSIZE $pool/$fs 90d583b39bSJohn Wren Kennedy ;; 91*591e0e13SSebastien Roy *) log_must zfs create -o mountpoint=$mntpoint $pool/$fs 92d583b39bSJohn Wren Kennedy ;; 93d583b39bSJohn Wren Kennedy esac 94d583b39bSJohn Wren Kennedy 95d583b39bSJohn Wren Kennedy return 0 96d583b39bSJohn Wren Kennedy} 97d583b39bSJohn Wren Kennedy 98d583b39bSJohn Wren Kennedy# Destroy ( fs | container | vol ) with the given parameters. 99d583b39bSJohn Wren Kennedyfunction cleanup_filesystem #pool #fs 100d583b39bSJohn Wren Kennedy{ 101d583b39bSJohn Wren Kennedy typeset pool=$1 102d583b39bSJohn Wren Kennedy typeset fs=${2##/} 103d583b39bSJohn Wren Kennedy typeset mtpt="" 104d583b39bSJohn Wren Kennedy 105d583b39bSJohn Wren Kennedy if [[ -z $pool || -z $fs ]]; then 106d583b39bSJohn Wren Kennedy log_note "Missing parameter: (\"$pool\", \"$fs\")" 107d583b39bSJohn Wren Kennedy return 1 108d583b39bSJohn Wren Kennedy fi 109d583b39bSJohn Wren Kennedy 110d583b39bSJohn Wren Kennedy if datasetexists "$pool/$fs" ; then 111d583b39bSJohn Wren Kennedy mtpt=$(get_prop mountpoint "$pool/$fs") 1121d32ba66SJohn Wren Kennedy log_must zfs destroy -r $pool/$fs 113d583b39bSJohn Wren Kennedy 114d583b39bSJohn Wren Kennedy [[ -d $mtpt ]] && \ 1151d32ba66SJohn Wren Kennedy log_must rm -rf $mtpt 116d583b39bSJohn Wren Kennedy else 117d583b39bSJohn Wren Kennedy return 1 118d583b39bSJohn Wren Kennedy fi 119d583b39bSJohn Wren Kennedy 120d583b39bSJohn Wren Kennedy return 0 121d583b39bSJohn Wren Kennedy} 122d583b39bSJohn Wren Kennedy 123d583b39bSJohn Wren Kennedy# Make sure 'zfs mount' should display all ZFS filesystems currently mounted. 124d583b39bSJohn Wren Kennedy# The results of 'zfs mount' and 'df -F zfs' should be identical. 125d583b39bSJohn Wren Kennedyfunction verify_mount_display 126d583b39bSJohn Wren Kennedy{ 127d583b39bSJohn Wren Kennedy typeset fs 128d583b39bSJohn Wren Kennedy 1291d32ba66SJohn Wren Kennedy for fs in $(zfs $mountcmd | awk '{print $1}') ; do 130d583b39bSJohn Wren Kennedy log_must mounted $fs 131d583b39bSJohn Wren Kennedy done 132d583b39bSJohn Wren Kennedy return 0 133d583b39bSJohn Wren Kennedy} 134