2017-09-12 13:47:30 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
set -e
|
|
|
|
BASE_DIR=$(readlink -f $(dirname $0))
|
|
|
|
[[ -z "$COMMON_DIR" ]] && COMMON_DIR="$(cd $BASE_DIR/../common && pwd)"
|
|
|
|
ROOT_DIR=$(readlink -f $BASE_DIR/../../..)
|
|
|
|
|
|
|
|
PLUGIN_DIR=$ROOT_DIR/examples/bdev/fio_plugin
|
|
|
|
RPC_PY="$ROOT_DIR/scripts/rpc.py"
|
|
|
|
FIO_BIN="/usr/src/fio/fio"
|
2017-12-14 20:00:13 +00:00
|
|
|
virtio_bdevs=""
|
|
|
|
virtio_nvme_bdevs=""
|
2017-12-14 19:32:58 +00:00
|
|
|
|
|
|
|
function usage()
|
|
|
|
{
|
|
|
|
[[ ! -z $2 ]] && ( echo "$2"; echo ""; )
|
|
|
|
echo "Script for running vhost initiator tests."
|
|
|
|
echo "Usage: $(basename $1) [-h|--help] [--fiobin=PATH]"
|
|
|
|
echo "-h, --help Print help and exit"
|
|
|
|
echo " --fiobin=PATH Path to fio binary on host [default=/usr/src/fio/fio]"
|
|
|
|
}
|
|
|
|
|
|
|
|
while getopts 'h-:' optchar; do
|
|
|
|
case "$optchar" in
|
|
|
|
-)
|
|
|
|
case "$OPTARG" in
|
|
|
|
help) usage $0 && exit 0 ;;
|
|
|
|
fiobin=*) FIO_BIN="${OPTARG#*=}" ;;
|
|
|
|
*) usage $0 echo "Invalid argument '$OPTARG'" && exit 1 ;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
h) usage $0 && exit 0 ;;
|
|
|
|
*) usage $0 "Invalid argument '$optchar'" && exit 1 ;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
source $COMMON_DIR/common.sh
|
2017-09-12 13:47:30 +00:00
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
if [ ! -x $FIO_BIN ]; then
|
|
|
|
error "Invalid path of fio binary"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
|
|
echo "INFO: Go away user come back as root"
|
|
|
|
exit 1
|
|
|
|
fi
|
2017-09-12 13:47:30 +00:00
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
trap 'rm -f *.state; error_exit "${FUNCNAME}""${LINENO}"' ERR SIGTERM SIGABRT
|
2017-12-15 15:11:02 +00:00
|
|
|
function run_spdk_fio() {
|
2017-12-14 19:32:58 +00:00
|
|
|
LD_PRELOAD=$PLUGIN_DIR/fio_plugin $FIO_BIN --ioengine=spdk_bdev\
|
2017-12-14 20:08:13 +00:00
|
|
|
"$@" --spdk_mem=1024
|
2017-09-12 13:47:30 +00:00
|
|
|
}
|
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
function create_bdev_config()
|
|
|
|
{
|
2017-12-14 20:00:13 +00:00
|
|
|
local vbdevs
|
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
if [ -z "$($RPC_PY get_bdevs | jq '.[] | select(.name=="Nvme0n1")')" ]; then
|
|
|
|
error "Nvme0n1 bdev not found!"
|
|
|
|
fi
|
2017-10-03 19:06:27 +00:00
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
$RPC_PY construct_vhost_scsi_controller naa.Nvme0n1.0
|
2017-12-14 20:00:13 +00:00
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Nvme0n1.0 0 Nvme0n1p0
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Nvme0n1.0 1 Nvme0n1p1
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Nvme0n1.0 2 Nvme0n1p2
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Nvme0n1.0 3 Nvme0n1p3
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Nvme0n1.0 4 Nvme0n1p4
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Nvme0n1.0 5 Nvme0n1p5
|
2017-12-14 19:32:58 +00:00
|
|
|
|
|
|
|
$RPC_PY construct_malloc_bdev 128 512 --name Malloc0
|
|
|
|
$RPC_PY construct_vhost_scsi_controller naa.Malloc0.1
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Malloc0.1 0 Malloc0
|
|
|
|
|
|
|
|
$RPC_PY construct_malloc_bdev 128 4096 --name Malloc1
|
|
|
|
$RPC_PY construct_vhost_scsi_controller naa.Malloc1.2
|
|
|
|
$RPC_PY add_vhost_scsi_lun naa.Malloc1.2 0 Malloc1
|
2017-12-14 20:00:13 +00:00
|
|
|
|
|
|
|
vbdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf)
|
|
|
|
virtio_bdevs=$(jq -r '[.[].name] | join(":")' <<< $vbdevs)
|
2017-10-06 14:42:32 +00:00
|
|
|
}
|
|
|
|
|
2017-12-15 22:06:11 +00:00
|
|
|
timing_enter spdk_vhost_run
|
2017-12-14 19:32:58 +00:00
|
|
|
spdk_vhost_run $BASE_DIR
|
2017-12-15 22:06:11 +00:00
|
|
|
timing_exit spdk_vhost_run
|
2017-09-12 13:47:30 +00:00
|
|
|
|
2017-12-14 19:32:58 +00:00
|
|
|
timing_enter create_bdev_config
|
|
|
|
create_bdev_config
|
|
|
|
timing_exit create_bdev_config
|
|
|
|
|
|
|
|
timing_enter run_spdk_fio
|
2018-01-11 18:22:48 +00:00
|
|
|
run_spdk_fio $BASE_DIR/bdev.fio --filename=$virtio_bdevs --spdk_conf=$BASE_DIR/bdev.conf
|
2017-12-14 19:32:58 +00:00
|
|
|
timing_exit run_spdk_fio
|
|
|
|
|
|
|
|
rm -f *.state
|
2017-12-15 22:06:11 +00:00
|
|
|
timing_enter spdk_vhost_kill
|
2017-09-12 13:47:30 +00:00
|
|
|
spdk_vhost_kill
|
2017-12-15 22:06:11 +00:00
|
|
|
timing_exit spdk_vhost_kill
|