]> git.proxmox.com Git - mirror_zfs-debian.git/blame - tests/zfs-tests/tests/functional/cache/cache_010_neg.ksh
New upstream version 0.7.2
[mirror_zfs-debian.git] / tests / zfs-tests / tests / functional / cache / cache_010_neg.ksh
CommitLineData
cae5b340
AX
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#
29# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
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
47# See issue: https://github.com/zfsonlinux/zfs/issues/6145
48if is_linux; then
49 log_unsupported "Test case occasionally fails"
50fi
51
52function cleanup_testenv
53{
54 cleanup
55 if [[ -n $lofidev ]]; then
56 if is_linux; then
57 losetup -d $lofidev
58 else
59 lofiadm -d $lofidev
60 fi
61 fi
62}
63
64log_assert "Cache device can only be block devices."
65log_onexit cleanup_testenv
66
67TESTVOL=testvol1$$
68dsk1=${DISKS%% *}
69log_must zpool create $TESTPOOL ${DISKS#$dsk1}
70
71# Add nomal ${DEV_RDSKDIR} device
72log_must zpool add $TESTPOOL cache \
73 ${DEV_RDSKDIR}/${dsk1}${SLICE_PREFIX}${SLICE0}
74log_must verify_cache_device $TESTPOOL $dsk1 'ONLINE'
75
76# Add normal file
77log_mustnot zpool add $TESTPOOL cache $VDEV2
78
79# Add /dev/rlofi device (allowed under Linux)
80if is_linux; then
81 lofidev=$(losetup -f)
82 lofidev=${lofidev##*/}
83 log_must losetup $lofidev ${VDEV2%% *}
84 log_must zpool add $TESTPOOL cache $lofidev
85 log_must zpool remove $TESTPOOL $lofidev
86 log_must losetup -d $lofidev
87 lofidev=""
88else
89 lofidev=${VDEV2%% *}
90 log_must lofiadm -a $lofidev
91 lofidev=$(lofiadm $lofidev)
92 log_mustnot zpool add $TESTPOOL cache "/dev/rlofi/${lofidev#/dev/lofi/}"
93 log_must lofiadm -d $lofidev
94 lofidev=""
95fi
96
97# Add /dev/zvol/rdsk device (allowed under Linux)
98if ! is_linux; then
99 log_must zpool create $TESTPOOL2 $VDEV2
100 log_must zfs create -V $SIZE $TESTPOOL2/$TESTVOL
101 log_mustnot zpool add $TESTPOOL cache \
102 ${ZVOL_RDEVDIR}/$TESTPOOL2/$TESTVOL
103fi
104
105log_pass "Cache device can only be block devices."