1#!/bin/ksh -p 2 3# 4# This file and its contents are supplied under the terms of the 5# Common Development and Distribution License ("CDDL"), version 1.0. 6# You may only use this file in accordance with the terms of version 7# 1.0 of the CDDL. 8# 9# A full copy of the text of the CDDL should have accompanied this 10# source. A copy of the CDDL is also available via the Internet at 11# http://www.illumos.org/license/CDDL. 12# 13 14# 15# Copyright (c) 2016 by Delphix. All rights reserved. 16# 17 18. $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib 19 20# 21# DESCRIPTION: 22# A pool should be importable using an outdated cachefile that is unaware 23# that a mirror was detached. 24# 25# STRATEGY: 26# 1. Create a pool with some devices mirrored and an alternate cachefile. 27# 2. Backup the cachefile. 28# 3. Detach a mirror from the pool. 29# 4. Export the pool. 30# 5. Verify that we can import the pool using the backed-up cachefile. 31# 32 33verify_runnable "global" 34 35log_onexit cleanup 36 37function test_detach_vdev 38{ 39 typeset poolcreate="$1" 40 typeset poolcheck="$2" 41 42 log_note "$0: pool '$poolcreate', detach $VDEV4." 43 44 log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $poolcreate 45 46 log_must cp $CPATH $CPATHBKP 47 48 log_must zpool detach $TESTPOOL1 $VDEV4 49 log_must rm -f $VDEV4 50 51 log_must zpool export $TESTPOOL1 52 53 log_must zpool import -c $CPATHBKP $TESTPOOL1 54 log_must check_pool_config $TESTPOOL1 "$poolcheck" 55 56 # Cleanup 57 log_must zpool destroy $TESTPOOL1 58 log_must rm -f $CPATH $CPATHBKP 59 log_must mkfile $FILE_SIZE $VDEV4 60 61 log_note "" 62} 63 64test_detach_vdev "mirror $VDEV0 $VDEV4" "$VDEV0" 65test_detach_vdev "mirror $VDEV0 $VDEV4 mirror $VDEV1 $VDEV2" \ 66 "$VDEV0 mirror $VDEV1 $VDEV2" 67test_detach_vdev "mirror $VDEV0 $VDEV1 $VDEV4" "mirror $VDEV0 $VDEV1" 68test_detach_vdev "$VDEV0 log mirror $VDEV1 $VDEV4" "$VDEV0 log $VDEV1" 69 70log_pass "zpool import -c cachefile_unaware_of_detach passed." 71