d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#!/bin/ksh -p
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 2007 Sun Microsystems, Inc. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Use is subject to license terms.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn 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.kshlib
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# DESCRIPTION:
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# Verify that 'zfs mount -a' succeeds as root.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# STRATEGY:
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 1. Create a group of pools with specified vdev.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 2. Create zfs filesystems within the given pools.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 3. Unmount all the filesystems.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 4. Verify that 'zfs mount -a' command succeed,
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# and all available ZFS filesystems are mounted.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# 5. Verify that 'zfs mount' is identical with 'df -F zfs'
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyverify_runnable "both"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyset -A fs "$TESTFS" "$TESTFS1"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyset -A ctr "" "$TESTCTR" "$TESTCTR/$TESTCTR1" "$TESTCTR1"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyset -A vol "$TESTVOL" "$TESTVOL1"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction setup_all
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset path
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( i < ${#ctr[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy path=${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if [[ -n ${ctr[i]} ]]; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy path=$path/${ctr[i]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy setup_filesystem "$DISKS" "$TESTPOOL" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "${ctr[i]}" "$path" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "ctr"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if is_global_zone ; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < ${#vol[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy setup_filesystem "$DISKS" "$TESTPOOL" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "${ctr[i]}/${vol[j]}" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "$path/${vol[j]}" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "vol"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j = j + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < ${#fs[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy setup_filesystem "$DISKS" "$TESTPOOL" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "${ctr[i]}/${fs[j]}" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "$path/${fs[j]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j = j + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i = i + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction cleanup_all
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset path
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i = ${#ctr[*]} - 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( i >= 0 )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if is_global_zone ; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < ${#vol[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy cleanup_filesystem "$TESTPOOL" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "${ctr[i]}/${vol[j]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j = j + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < ${#fs[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy cleanup_filesystem "$TESTPOOL" \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "${ctr[i]}/${fs[j]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j = j + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -n ${ctr[i]} ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy cleanup_filesystem "$TESTPOOL" "${ctr[i]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i = i - 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy rm -rf ${TEST_BASE_DIR%%/}/testroot$$
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# This function takes a single true/false argument. If true it will verify that
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# all file systems are mounted. If false it will verify that they are not
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy# mounted.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyfunction verify_all
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy{
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i i=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset -i j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset path
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy typeset logfunc
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if $1; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy logfunc=log_must
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy else
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy logfunc=log_mustnot
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( i < ${#ctr[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy path=$TESTPOOL
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy [[ -n ${ctr[i]} ]] && \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy path=$path/${ctr[i]}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy if is_global_zone ; then
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < ${#vol[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy log_mustnot mounted "$path/${vol[j]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j = j + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy fi
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy j=0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy while (( j < ${#fs[*]} )); do
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $logfunc mounted "$path/${fs[j]}"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((j = j + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy $logfunc mounted "$path"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy ((i = i + 1))
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy done
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy return 0
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy}
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_assert "Verify that 'zfs $mountall' succeeds as root, " \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "and all available ZFS filesystems are mounted."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_onexit cleanup_all
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_must setup_all
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyexport __ZFS_POOL_RESTRICT="$TESTPOOL"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs $unmountall
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyunset __ZFS_POOL_RESTRICT
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyverify_all false
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyexport __ZFS_POOL_RESTRICT="$TESTPOOL"
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedylog_must zfs $mountall
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyunset __ZFS_POOL_RESTRICT
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyverify_all true
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_note "Verify that 'zfs $mountcmd' will display " \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "all ZFS filesystems currently mounted."
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedyverify_mount_display
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedylog_pass "'zfs $mountall' succeeds as root, " \
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy "and all available ZFS filesystems are mounted."