diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index 0f30d0280..53c054fb3 100644 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -56,6 +56,7 @@ export RUN_NIGHTLY_FAILING : ${SPDK_RUN_ASAN=0}; export SPDK_RUN_ASAN : ${SPDK_RUN_UBSAN=0}; export SPDK_RUN_UBSAN : ${SPDK_RUN_INSTALLED_DPDK=0}; export SPDK_RUN_INSTALLED_DPDK +: ${SPDK_RUN_NON_ROOT=0}; export SPDK_RUN_NON_ROOT : ${SPDK_TEST_CRYPTO=0}; export SPDK_TEST_CRYPTO : ${SPDK_TEST_FTL=0}; export SPDK_TEST_FTL : ${SPDK_TEST_BDEV_FTL=0}; export SPDK_TEST_BDEV_FTL @@ -433,8 +434,19 @@ function killprocess() { fi if kill -0 $1; then - echo "killing process with pid $1" - kill $1 + if [ "$(ps --no-headers -o comm= $1)" = "sudo" ]; then + # kill the child process, which is the actual app + # (assume $1 has just one child) + local child="$(pgrep -P $1)" + echo "killing process with pid $child" + kill $child + else + echo "killing process with pid $1" + kill $1 + fi + + # wait for the process regardless if its the dummy sudo one + # or the actual app - it should terminate anyway wait $1 fi } diff --git a/test/nvmf/common.sh b/test/nvmf/common.sh index 164fa727f..f051cba7c 100644 --- a/test/nvmf/common.sh +++ b/test/nvmf/common.sh @@ -4,8 +4,17 @@ NVMF_IP_LEAST_ADDR=8 NVMF_TCP_IP_ADDRESS="127.0.0.1" NVMF_TRANSPORT_OPTS="" +function build_nvmf_app_args() +{ + if [ $SPDK_RUN_NON_ROOT -eq 1 ]; then + echo "sudo -u $(logname) ./app/nvmf_tgt/nvmf_tgt -i $NVMF_APP_SHM_ID -e 0xFFFF" + else + echo "./app/nvmf_tgt/nvmf_tgt -i $NVMF_APP_SHM_ID -e 0xFFFF" + fi +} + : ${NVMF_APP_SHM_ID="0"}; export NVMF_APP_SHM_ID -: ${NVMF_APP="./app/nvmf_tgt/nvmf_tgt -i $NVMF_APP_SHM_ID -e 0xFFFF"}; export NVMF_APP +: ${NVMF_APP="$(build_nvmf_app_args)"}; export NVMF_APP have_pci_nics=0 diff --git a/test/nvmf/host/perf.sh b/test/nvmf/host/perf.sh index 370ea57d2..f70f22a75 100755 --- a/test/nvmf/host/perf.sh +++ b/test/nvmf/host/perf.sh @@ -33,7 +33,12 @@ $rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPOR # Test multi-process access to local NVMe device if [ -n "$local_nvme_trid" ]; then - $rootdir/examples/nvme/perf/perf -i $NVMF_APP_SHM_ID -q 32 -o 4096 -w randrw -M 50 -t 1 -r "$local_nvme_trid" + if [ $SPDK_RUN_NON_ROOT -eq 1 ]; then + perf_app="sudo -u $(logname) $rootdir/examples/nvme/perf/perf" + else + perf_app="$rootdir/examples/nvme/perf/perf" + fi + $perf_app -i $NVMF_APP_SHM_ID -q 32 -o 4096 -w randrw -M 50 -t 1 -r "$local_nvme_trid" fi $rootdir/examples/nvme/perf/perf -q 32 -o 4096 -w randrw -M 50 -t 1 -r "trtype:$TEST_TRANSPORT adrfam:IPv4 traddr:$NVMF_FIRST_TARGET_IP trsvcid:$NVMF_PORT"