#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved.
# Copyright (c) 2017 Open-E, Inc. All Rights Reserved.
#

. $STF_SUITE/include/libtest.shlib

verify_runnable "global"

export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}')
export DISKSARRAY=$DISKS
export SMALL_FILE_SIZE=10
export LARGE_FILE_SIZE=80
export MAXTIMEOUT=40

export SDSIZE=256
export SDHOSTS=1
export SDTGTS=1
export SDLUNS=1

export DISK1=$(echo $DISKS | nawk '{print $1}')
export DISK2=$(echo $DISKS | nawk '{print $2}')
export DISK3=$(echo $DISKS | nawk '{print $3}')

if is_linux; then
	set_slice_prefix
	set_device_dir
	devs_id[0]=$(get_persistent_disk_name $DISK1)
	devs_id[1]=$(get_persistent_disk_name $DISK2)
	devs_id[2]=$(get_persistent_disk_name $DISK3)
	export devs_id
else
	DEV_DSKDIR="/dev"
fi
