2019-10-22 15:11:35 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
testdir=$(readlink -f $(dirname $0))
|
|
|
|
rootdir=$(readlink -f $testdir/../..)
|
|
|
|
rpc_py="$rootdir/scripts/rpc.py"
|
|
|
|
source "$rootdir/scripts/common.sh"
|
|
|
|
source "$rootdir/test/common/autotest_common.sh"
|
|
|
|
|
2020-06-09 09:22:41 +00:00
|
|
|
# The OPAL CI tests is only used for P4510 devices.
|
2020-08-18 05:37:37 +00:00
|
|
|
mapfile -t bdfs < <(get_nvme_bdfs_by_id 0x0a54)
|
2020-06-09 09:22:41 +00:00
|
|
|
if [[ -z ${bdfs[0]} ]]; then
|
|
|
|
echo "No P4510 device found, exit the tests"
|
|
|
|
exit 1
|
|
|
|
fi
|
2019-10-22 15:11:35 +00:00
|
|
|
|
2020-06-09 09:22:41 +00:00
|
|
|
bdf=${bdfs[0]}
|
|
|
|
|
|
|
|
function opal_revert_and_init() {
|
|
|
|
$SPDK_BIN_DIR/spdk_tgt &
|
|
|
|
spdk_tgt_pid=$!
|
2020-08-18 05:40:39 +00:00
|
|
|
trap 'killprocess $spdk_tgt_pid; exit 1' SIGINT SIGTERM EXIT
|
2020-06-09 09:22:41 +00:00
|
|
|
waitforlisten $spdk_tgt_pid
|
|
|
|
|
|
|
|
$rootdir/scripts/rpc.py bdev_nvme_attach_controller -b "nvme0" -t "pcie" -a ${bdf}
|
|
|
|
# Ignore if this fails.
|
|
|
|
$rootdir/scripts/rpc.py bdev_nvme_opal_revert -b nvme0 -p test || true
|
|
|
|
sleep 1
|
|
|
|
$rpc_py bdev_nvme_opal_init -b nvme0 -p test
|
|
|
|
$rpc_py bdev_nvme_detach_controller nvme0
|
|
|
|
|
|
|
|
killprocess $spdk_tgt_pid
|
2019-10-22 15:11:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function test_opal_cmds() {
|
2020-06-09 09:22:41 +00:00
|
|
|
$rpc_py bdev_nvme_attach_controller -b "nvme0" -t "pcie" -a ${bdf}
|
|
|
|
|
2019-10-22 15:11:35 +00:00
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 1 -s 0 -l 1024 -p test
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 2 -s 1024 -l 512 -p test
|
|
|
|
$rpc_py bdev_opal_get_info -b nvme0n1r1 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r1 -p test
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r2 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 1 -s 0 -l 1024 -p test
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 2 -s 1024 -l 512 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r2 -p test
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r1 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 3 -s 4096 -l 4096 -p test
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 1 -s 0 -l 1024 -p test
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 2 -s 1024 -l 512 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_new_user -b nvme0n1r3 -p test -i 3 -u tester3
|
|
|
|
$rpc_py bdev_opal_get_info -b nvme0n1r3 -p test
|
|
|
|
$rpc_py bdev_opal_set_lock_state -b nvme0n1r3 -i 3 -p tester3 -l readonly
|
|
|
|
$rpc_py bdev_opal_get_info -b nvme0n1r3 -p test
|
|
|
|
$rpc_py bdev_opal_set_lock_state -b nvme0n1r1 -i 0 -p test -l rwlock
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r2 -p test
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r3 -p test
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r1 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_nvme_detach_controller nvme0
|
|
|
|
}
|
|
|
|
|
|
|
|
function setup_test_environment() {
|
2020-06-09 09:22:41 +00:00
|
|
|
$rpc_py bdev_nvme_attach_controller -b "nvme0" -t "pcie" -a ${bdf}
|
|
|
|
|
2019-10-22 15:11:35 +00:00
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 1 -s 0 -l 1024 -p test
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 2 -s 1024 -l 512 -p test
|
|
|
|
$rpc_py bdev_opal_create -b nvme0 -n 1 -i 3 -s 4096 -l 4096 -p test
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_new_user -b nvme0n1r1 -p test -i 1 -u tester1
|
|
|
|
$rpc_py bdev_opal_set_lock_state -b nvme0n1r1 -i 1 -p tester1 -l readwrite
|
|
|
|
$rpc_py bdev_opal_new_user -b nvme0n1r3 -p test -i 3 -u tester3
|
|
|
|
$rpc_py bdev_opal_set_lock_state -b nvme0n1r3 -i 3 -p tester3 -l readwrite
|
|
|
|
|
|
|
|
$rpc_py bdev_opal_set_lock_state -b nvme0n1r2 -i 0 -p test -l readwrite
|
|
|
|
}
|
|
|
|
|
|
|
|
function clean_up() {
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r1 -p test
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r2 -p test
|
|
|
|
$rpc_py bdev_opal_delete -b nvme0n1r3 -p test
|
|
|
|
}
|
|
|
|
|
|
|
|
function revert() {
|
2020-06-09 09:22:41 +00:00
|
|
|
$rpc_py bdev_nvme_opal_revert -b nvme0 -p test
|
2019-10-22 15:11:35 +00:00
|
|
|
}
|
|
|
|
|
2019-12-05 19:40:45 +00:00
|
|
|
function opal_spdk_tgt() {
|
2020-05-11 21:15:03 +00:00
|
|
|
$SPDK_BIN_DIR/spdk_tgt &
|
2019-12-05 19:40:45 +00:00
|
|
|
spdk_tgt_pid=$!
|
2020-06-09 09:22:41 +00:00
|
|
|
trap 'killprocess $spdk_tgt_pid; exit 1' SIGINT SIGTERM EXIT
|
2019-12-05 19:40:45 +00:00
|
|
|
waitforlisten $spdk_tgt_pid
|
|
|
|
test_opal_cmds
|
|
|
|
killprocess $spdk_tgt_pid
|
|
|
|
}
|
|
|
|
|
|
|
|
function opal_bdevio() {
|
|
|
|
$rootdir/test/bdev/bdevio/bdevio -w &
|
|
|
|
bdevio_pid=$!
|
2020-06-09 09:22:41 +00:00
|
|
|
trap 'killprocess $bdevio_pid; exit 1' SIGINT SIGTERM EXIT
|
2019-12-05 19:40:45 +00:00
|
|
|
waitforlisten $bdevio_pid
|
|
|
|
setup_test_environment
|
|
|
|
$rootdir/test/bdev/bdevio/tests.py perform_tests
|
|
|
|
clean_up
|
2020-06-09 09:22:41 +00:00
|
|
|
$rpc_py bdev_nvme_detach_controller nvme0
|
2019-12-05 19:40:45 +00:00
|
|
|
trap - SIGINT SIGTERM EXIT
|
|
|
|
killprocess $bdevio_pid
|
|
|
|
}
|
|
|
|
|
|
|
|
function opal_bdevperf() {
|
|
|
|
$rootdir/test/bdev/bdevperf/bdevperf -z -q 8 -o 4096 -w verify -t 10 &
|
|
|
|
bdevperf_pid=$!
|
|
|
|
trap 'revert; killprocess $bdevperf_pid; exit 1' SIGINT SIGTERM EXIT
|
|
|
|
waitforlisten $bdevperf_pid
|
|
|
|
setup_test_environment
|
|
|
|
$rootdir/test/bdev/bdevperf/bdevperf.py perform_tests
|
|
|
|
clean_up
|
|
|
|
revert
|
2020-06-09 09:22:41 +00:00
|
|
|
$rpc_py bdev_nvme_detach_controller nvme0
|
2019-12-05 19:40:45 +00:00
|
|
|
trap - SIGINT SIGTERM EXIT
|
|
|
|
killprocess $bdevperf_pid
|
|
|
|
}
|
|
|
|
|
2020-06-09 09:22:41 +00:00
|
|
|
opal_revert_and_init
|
|
|
|
|
2019-12-05 19:40:45 +00:00
|
|
|
run_test "nvme_opal_spdk_tgt" opal_spdk_tgt
|
|
|
|
run_test "nvme_opal_bdevio" opal_bdevio
|
|
|
|
run_test "nvme_opal_bdevperf" opal_bdevperf
|