]> git.proxmox.com Git - mirror_zfs.git/blame - tests/zfs-tests/tests/functional/cache/cache_010_neg.ksh
ZTS: Adopt OpenZFS test analysis script
[mirror_zfs.git] / tests / zfs-tests / tests / functional / cache / cache_010_neg.ksh
CommitLineData
6bb24f4d
BB
1#!/bin/ksh -p
2#
3# CDDL HEADER START
4#
5# The contents of this file are subject to the terms of the
6# Common Development and Distribution License (the "License").
7# You may not use this file except in compliance with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22
23#
24# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
25# Use is subject to license terms.
26#
27
28#
c1d9abf9 29# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
6bb24f4d
BB
30#
31
32. $STF_SUITE/tests/functional/cache/cache.cfg
33. $STF_SUITE/tests/functional/cache/cache.kshlib
34
35#
36# DESCRIPTION:
37# Verify cache device must be a block device.
38#
39# STRATEGY:
40# 1. Create a pool
41# 2. Add different object as cache
42# 3. Verify character devices and files fail
43#
44
45verify_runnable "global"
46
47function cleanup_testenv
48{
49 cleanup
50 if [[ -n $lofidev ]]; then
95401cb6
BB
51 if is_linux; then
52 losetup -d $lofidev
53 else
54 lofiadm -d $lofidev
55 fi
6bb24f4d
BB
56 fi
57}
58
59log_assert "Cache device can only be block devices."
60log_onexit cleanup_testenv
61
62TESTVOL=testvol1$$
63dsk1=${DISKS%% *}
c1d9abf9 64log_must zpool create $TESTPOOL ${DISKS#$dsk1}
6bb24f4d 65
6bb24f4d 66# Add nomal ${DEV_RDSKDIR} device
95401cb6
BB
67log_must zpool add $TESTPOOL cache \
68 ${DEV_RDSKDIR}/${dsk1}${SLICE_PREFIX}${SLICE0}
69log_must verify_cache_device $TESTPOOL $dsk1 'ONLINE'
6bb24f4d 70
95401cb6 71# Add normal file
c1d9abf9 72log_mustnot zpool add $TESTPOOL cache $VDEV2
6bb24f4d 73
95401cb6
BB
74# Add /dev/rlofi device (allowed under Linux)
75if is_linux; then
76 lofidev=$(losetup -f)
77 lofidev=${lofidev##*/}
78 log_must losetup $lofidev ${VDEV2%% *}
79 log_must zpool add $TESTPOOL cache $lofidev
80 log_must zpool remove $TESTPOOL $lofidev
81 log_must losetup -d $lofidev
82 lofidev=""
83else
84 lofidev=${VDEV2%% *}
85 log_must lofiadm -a $lofidev
86 lofidev=$(lofiadm $lofidev)
87 log_mustnot zpool add $TESTPOOL cache "/dev/rlofi/${lofidev#/dev/lofi/}"
c1d9abf9 88 log_must lofiadm -d $lofidev
6bb24f4d
BB
89 lofidev=""
90fi
91
95401cb6
BB
92# Add /dev/zvol/rdsk device (allowed under Linux)
93if ! is_linux; then
94 log_must zpool create $TESTPOOL2 $VDEV2
95 log_must zfs create -V $SIZE $TESTPOOL2/$TESTVOL
96 log_mustnot zpool add $TESTPOOL cache \
97 ${ZVOL_RDEVDIR}/$TESTPOOL2/$TESTVOL
98fi
6bb24f4d
BB
99
100log_pass "Cache device can only be block devices."