15711d393Sloli#!/bin/ksh -p 25711d393Sloli# 35711d393Sloli# CDDL HEADER START 45711d393Sloli# 55711d393Sloli# The contents of this file are subject to the terms of the 65711d393Sloli# Common Development and Distribution License (the "License"). 75711d393Sloli# You may not use this file except in compliance with the License. 85711d393Sloli# 95711d393Sloli# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 105711d393Sloli# or http://www.opensolaris.org/os/licensing. 115711d393Sloli# See the License for the specific language governing permissions 125711d393Sloli# and limitations under the License. 135711d393Sloli# 145711d393Sloli# When distributing Covered Code, include this CDDL HEADER in each 155711d393Sloli# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 165711d393Sloli# If applicable, add the following below this CDDL HEADER, with the 175711d393Sloli# fields enclosed by brackets "[]" replaced with your own identifying 185711d393Sloli# information: Portions Copyright [yyyy] [name of copyright owner] 195711d393Sloli# 205711d393Sloli# CDDL HEADER END 215711d393Sloli# 225711d393Sloli 235711d393Sloli# 245711d393Sloli# Copyright 2017, loli10K. All rights reserved. 255711d393Sloli# 265711d393Sloli 275711d393Sloli. $STF_SUITE/include/libtest.shlib 285711d393Sloli. $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib 295711d393Sloli 305711d393Sloli# 315711d393Sloli# DESCRIPTION: 325711d393Sloli# 'zpool replace' should use the ashift pool property value as default. 335711d393Sloli# 345711d393Sloli# STRATEGY: 355711d393Sloli# 1. Create a pool with default values. 365711d393Sloli# 2. Verify 'zpool replace' uses the ashift pool property value when 375711d393Sloli# replacing an existing device. 385711d393Sloli# 3. Verify the default ashift value can still be overridden by manually 395711d393Sloli# specifying '-o ashift=<n>' from the command line. 405711d393Sloli# 415711d393Sloli 425711d393Sloliverify_runnable "global" 435711d393Sloli 445711d393Slolifunction cleanup 455711d393Sloli{ 465711d393Sloli poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 475711d393Sloli log_must rm -f $disk1 $disk2 485711d393Sloli} 495711d393Sloli 505711d393Slolilog_assert "'zpool replace' uses the ashift pool property value as default." 515711d393Slolilog_onexit cleanup 525711d393Sloli 535711d393Slolidisk1=$TEST_BASE_DIR/$FILEDISK0 545711d393Slolidisk2=$TEST_BASE_DIR/$FILEDISK1 55*0ac89930SBrian Behlendorflog_must truncate -s $SIZE $disk1 56*0ac89930SBrian Behlendorflog_must truncate -s $SIZE $disk2 575711d393Sloli 585711d393Slolitypeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") 595711d393Slolifor ashift in ${ashifts[@]} 605711d393Slolido 615711d393Sloli for pprop in ${ashifts[@]} 625711d393Sloli do 635711d393Sloli log_must zpool create -o ashift=$ashift $TESTPOOL1 $disk1 645711d393Sloli log_must zpool set ashift=$pprop $TESTPOOL1 655711d393Sloli # ashift_of(replacing_disk) <= ashift_of(existing_vdev) 665711d393Sloli if [[ $pprop -le $ashift ]] 675711d393Sloli then 685711d393Sloli log_must zpool replace $TESTPOOL1 $disk1 $disk2 695711d393Sloli wait_replacing $TESTPOOL1 705711d393Sloli verify_ashift $disk2 $ashift 715711d393Sloli if [[ $? -ne 0 ]] 725711d393Sloli then 735711d393Sloli log_fail "Device was replaced without " \ 745711d393Sloli "setting ashift value to $ashift" 755711d393Sloli fi 765711d393Sloli else 775711d393Sloli # cannot replace if pool prop ashift > vdev ashift 785711d393Sloli log_mustnot zpool replace $TESTPOOL1 $disk1 $disk2 795711d393Sloli # verify we can override the pool prop value manually 805711d393Sloli log_must zpool replace -o ashift=$ashift $TESTPOOL1 \ 815711d393Sloli $disk1 $disk2 825711d393Sloli wait_replacing $TESTPOOL1 835711d393Sloli verify_ashift $disk2 $ashift 845711d393Sloli if [[ $? -ne 0 ]] 855711d393Sloli then 865711d393Sloli log_fail "Device was replaced without " \ 875711d393Sloli "setting ashift value to $ashift" 885711d393Sloli fi 895711d393Sloli fi 905711d393Sloli # clean things for the next run 915711d393Sloli log_must zpool destroy $TESTPOOL1 92*0ac89930SBrian Behlendorf log_must zpool labelclear $disk1 935711d393Sloli log_must zpool labelclear $disk2 945711d393Sloli done 955711d393Slolidone 965711d393Sloli 975711d393Slolilog_pass "'zpool replace' uses the ashift pool property value." 98