zpool_export_002_pos.ksh revision 1d32ba663e202c24a5a1f2e5aef83fffb447cb7f
e57b9183811d515e3bbcd1a104516f0102fde114cg#!/bin/ksh -p
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# CDDL HEADER START
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# The contents of this file are subject to the terms of the
e57b9183811d515e3bbcd1a104516f0102fde114cg# Common Development and Distribution License (the "License").
e57b9183811d515e3bbcd1a104516f0102fde114cg# You may not use this file except in compliance with the License.
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e57b9183811d515e3bbcd1a104516f0102fde114cg# or http://www.opensolaris.org/os/licensing.
e57b9183811d515e3bbcd1a104516f0102fde114cg# See the License for the specific language governing permissions
e57b9183811d515e3bbcd1a104516f0102fde114cg# and limitations under the License.
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# When distributing Covered Code, include this CDDL HEADER in each
e57b9183811d515e3bbcd1a104516f0102fde114cg# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e57b9183811d515e3bbcd1a104516f0102fde114cg# If applicable, add the following below this CDDL HEADER, with the
e57b9183811d515e3bbcd1a104516f0102fde114cg# fields enclosed by brackets "[]" replaced with your own identifying
e57b9183811d515e3bbcd1a104516f0102fde114cg# information: Portions Copyright [yyyy] [name of copyright owner]
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# CDDL HEADER END
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
e57b9183811d515e3bbcd1a104516f0102fde114cg# Use is subject to license terms.
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# Copyright (c) 2016 by Delphix. All rights reserved.
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg. $STF_SUITE/include/libtest.shlib
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# DESCRIPTION:
e57b9183811d515e3bbcd1a104516f0102fde114cg# The 'zpool export' command must fail when a pool is
e57b9183811d515e3bbcd1a104516f0102fde114cg# busy i.e. mounted.
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg# STRATEGY:
e57b9183811d515e3bbcd1a104516f0102fde114cg# 1. Try and export the default pool when mounted and busy.
e57b9183811d515e3bbcd1a104516f0102fde114cg# 2. Verify an error is returned.
e57b9183811d515e3bbcd1a104516f0102fde114cg#
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cgverify_runnable "global"
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cgfunction cleanup
e57b9183811d515e3bbcd1a104516f0102fde114cg{
e57b9183811d515e3bbcd1a104516f0102fde114cg typeset dir=$(get_device_dir $DISKS)
e57b9183811d515e3bbcd1a104516f0102fde114cg cd $olddir || \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_fail "Couldn't cd back to $olddir"
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg datasetexists "$TESTPOOL/$TESTFS" || \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_must zpool import -d $dir $TESTPOOL
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg ismounted "$TESTPOOL/$TESTFS"
e57b9183811d515e3bbcd1a104516f0102fde114cg (( $? != 0 )) && \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_must zfs mount $TESTPOOL/$TESTFS
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cg [[ -e $TESTDIR/$TESTFILE0 ]] && \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_must rm -rf $TESTDIR/$TESTFILE0
e57b9183811d515e3bbcd1a104516f0102fde114cg}
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cgolddir=$PWD
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cglog_onexit cleanup
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cglog_assert "Verify a busy ZPOOL cannot be exported."
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cgismounted "$TESTPOOL/$TESTFS"
e57b9183811d515e3bbcd1a104516f0102fde114cg(( $? != 0 )) && \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_fail "$TESTDIR not mounted. Unable to continue."
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cgcd $TESTDIR || \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_fail "Couldn't cd to $TESTDIR"
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cglog_mustnot zpool export $TESTPOOL
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cgpoolexists $TESTPOOL || \
e57b9183811d515e3bbcd1a104516f0102fde114cg log_fail "$TESTPOOL not found in 'zpool list' output."
e57b9183811d515e3bbcd1a104516f0102fde114cg
e57b9183811d515e3bbcd1a104516f0102fde114cglog_pass "Unable to export a busy ZPOOL as expected."
e57b9183811d515e3bbcd1a104516f0102fde114cg