d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# CDDL HEADER START
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# The contents of this file are subject to the terms of the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Common Development and Distribution License (the "License").
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# You may not use this file except in compliance with the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# or http://www.opensolaris.org/os/licensing.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# See the License for the specific language governing permissions
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# and limitations under the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# CDDL HEADER END
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Use is subject to license terms.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy# Copyright (c) 2016 by Delphix. All rights reserved.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy. $STF_SUITE/include/libtest.shlib
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy. $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.cfg
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction force_unmount #dev
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset dev=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ismounted $dev
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if (( $? == 0 )); then
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs $unmountforce $dev
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Create pool and ( fs | container | vol ) with the given parameters,
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# it'll destroy prior exist one that has the same name.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction setup_filesystem #disklist #pool #fs #mntpoint #type #vdev
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset disklist=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset pool=$2
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset fs=${3##/}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset mntpoint=$4
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset type=$5
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset vdev=$6
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ -z $pool || -z $fs || -z $mntpoint ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_note "Missing parameter: (\"$pool\", \"$fs\", \"$mntpoint\")"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if is_global_zone && [[ -z $disklist ]] ; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_note "Missing disklist."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ $vdev != "" && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $vdev != "mirror" && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $vdev != "raidz" ]] ; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_note "Wrong vdev: (\"$vdev\")"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy poolexists $pool || \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy create_pool $pool $vdev $disklist
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy datasetexists $pool/$fs && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_must cleanup_filesystem $pool $fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy rmdir $mntpoint > /dev/null 2>&1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ ! -d $mntpoint ]]; then
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must mkdir -p $mntpoint
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy case "$type" in
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy 'ctr') log_must zfs create $pool/$fs
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs set mountpoint=$mntpoint $pool/$fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ;;
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy 'vol') log_must zfs create -V $VOLSIZE $pool/$fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ;;
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy *) log_must zfs create $pool/$fs
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs set mountpoint=$mntpoint $pool/$fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ;;
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy esac
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Destroy ( fs | container | vol ) with the given parameters.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction cleanup_filesystem #pool #fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset pool=$1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset fs=${2##/}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset mtpt=""
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ -z $pool || -z $fs ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_note "Missing parameter: (\"$pool\", \"$fs\")"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if datasetexists "$pool/$fs" ; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy mtpt=$(get_prop mountpoint "$pool/$fs")
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must zfs destroy -r $pool/$fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -d $mtpt ]] && \
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy log_must rm -rf $mtpt
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 1
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Make sure 'zfs mount' should display all ZFS filesystems currently mounted.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# The results of 'zfs mount' and 'df -F zfs' should be identical.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction verify_mount_display
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy for fs in $(zfs $mountcmd | awk '{print $1}') ; do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_must mounted $fs
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}