1f38cb554SJohn Wren Kennedy#!/bin/ksh -p 2f38cb554SJohn Wren Kennedy# 3f38cb554SJohn Wren Kennedy# CDDL HEADER START 4f38cb554SJohn Wren Kennedy# 5f38cb554SJohn Wren Kennedy# The contents of this file are subject to the terms of the 6f38cb554SJohn Wren Kennedy# Common Development and Distribution License (the "License"). 7f38cb554SJohn Wren Kennedy# You may not use this file except in compliance with the License. 8f38cb554SJohn Wren Kennedy# 9f38cb554SJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10f38cb554SJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing. 11f38cb554SJohn Wren Kennedy# See the License for the specific language governing permissions 12f38cb554SJohn Wren Kennedy# and limitations under the License. 13f38cb554SJohn Wren Kennedy# 14f38cb554SJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each 15f38cb554SJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16f38cb554SJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the 17f38cb554SJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying 18f38cb554SJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner] 19f38cb554SJohn Wren Kennedy# 20f38cb554SJohn Wren Kennedy# CDDL HEADER END 21f38cb554SJohn Wren Kennedy# 22f38cb554SJohn Wren Kennedy 23f38cb554SJohn Wren Kennedy# 24f38cb554SJohn Wren Kennedy# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25f38cb554SJohn Wren Kennedy# Use is subject to license terms. 26f38cb554SJohn Wren Kennedy# 27f38cb554SJohn Wren Kennedy 28f38cb554SJohn Wren Kennedy# 291d32ba66SJohn Wren Kennedy# Copyright (c) 2013, 2016 by Delphix. All rights reserved. 30*c1d5c2a4SKody Kantor# Copyright 2019 Joyent, Inc. 31f38cb554SJohn Wren Kennedy# 32f38cb554SJohn Wren Kennedy 33f38cb554SJohn Wren Kennedy. $STF_SUITE/tests/functional/cache/cache.cfg 34f38cb554SJohn Wren Kennedy. $STF_SUITE/tests/functional/cache/cache.kshlib 35f38cb554SJohn Wren Kennedy 36f38cb554SJohn Wren Kennedy# 37f38cb554SJohn Wren Kennedy# DESCRIPTION: 38*c1d5c2a4SKody Kantor# Verify cache device must be a block device or plain file. 39f38cb554SJohn Wren Kennedy# 40f38cb554SJohn Wren Kennedy# STRATEGY: 41f38cb554SJohn Wren Kennedy# 1. Create a pool 42*c1d5c2a4SKody Kantor# 2. Verify that raw disks, loopback files, and zvols can't be used to 43*c1d5c2a4SKody Kantor# back cache vdevs 44f38cb554SJohn Wren Kennedy# 45f38cb554SJohn Wren Kennedy 46f38cb554SJohn Wren Kennedyverify_runnable "global" 47f38cb554SJohn Wren Kennedy 48f38cb554SJohn Wren Kennedyfunction cleanup_testenv 49f38cb554SJohn Wren Kennedy{ 50f38cb554SJohn Wren Kennedy cleanup 51f38cb554SJohn Wren Kennedy if [[ -n $lofidev ]]; then 521d32ba66SJohn Wren Kennedy log_must lofiadm -d $lofidev 53f38cb554SJohn Wren Kennedy fi 54f38cb554SJohn Wren Kennedy} 55f38cb554SJohn Wren Kennedy 56*c1d5c2a4SKody Kantorlog_assert "Cache device can only be block devices or plain files." 57f38cb554SJohn Wren Kennedylog_onexit cleanup_testenv 58f38cb554SJohn Wren Kennedy 59f38cb554SJohn Wren KennedyTESTVOL=testvol1$$ 60f38cb554SJohn Wren Kennedydsk1=${DISKS%% *} 61*c1d5c2a4SKody Kantor 621d32ba66SJohn Wren Kennedylog_must zpool create $TESTPOOL ${DISKS#$dsk1} 63f38cb554SJohn Wren Kennedy 64*c1d5c2a4SKody Kantor# Add normal /dev/rdsk device 651d32ba66SJohn Wren Kennedylog_mustnot zpool add $TESTPOOL cache /dev/rdsk/${dsk1}s0 66f38cb554SJohn Wren Kennedy#log_must verify_cache_device $TESTPOOL $dsk1 'ONLINE' 67f38cb554SJohn Wren Kennedy 68f38cb554SJohn Wren Kennedy# Add /dev/rlofi device 69f38cb554SJohn Wren Kennedylofidev=${VDEV2%% *} 701d32ba66SJohn Wren Kennedylog_must lofiadm -a $lofidev 711d32ba66SJohn Wren Kennedylofidev=$(lofiadm $lofidev) 721d32ba66SJohn Wren Kennedylog_mustnot zpool add $TESTPOOL cache "/dev/rlofi/${lofidev#/dev/lofi/}" 73f38cb554SJohn Wren Kennedyif [[ -n $lofidev ]]; then 741d32ba66SJohn Wren Kennedy log_must lofiadm -d $lofidev 75f38cb554SJohn Wren Kennedy lofidev="" 76f38cb554SJohn Wren Kennedyfi 77f38cb554SJohn Wren Kennedy 78*c1d5c2a4SKody Kantor# Add normal files 79*c1d5c2a4SKody Kantorlog_must zpool add $TESTPOOL cache $FILEDEV 80*c1d5c2a4SKody Kantor 81f38cb554SJohn Wren Kennedy# Add /dev/zvol/rdsk device 821d32ba66SJohn Wren Kennedylog_must zpool create $TESTPOOL2 $VDEV2 831d32ba66SJohn Wren Kennedylog_must zfs create -V $SIZE $TESTPOOL2/$TESTVOL 841d32ba66SJohn Wren Kennedylog_mustnot zpool add $TESTPOOL cache /dev/zvol/rdsk/$TESTPOOL2/$TESTVOL 85f38cb554SJohn Wren Kennedy 86*c1d5c2a4SKody Kantorlog_pass "Cache device can only be block devices or plain files." 87