diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index e4dcc4eb9..e0490f7ea 100755 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -818,6 +818,31 @@ function rbd_cleanup() { fi } +function nvme_cli_build() { + if [[ -z "${DEPENDENCY_DIR}" ]]; then + echo DEPENDENCY_DIR not defined! + exit 1 + fi + + spdk_nvme_cli="${DEPENDENCY_DIR}/nvme-cli" + + if [[ ! -d $spdk_nvme_cli ]]; then + echo "nvme-cli repository not found at $spdk_nvme_cli; skipping tests." + exit 1 + fi + + # Build against the version of SPDK under test + pushd $spdk_nvme_cli + + git clean -dfx + + rm -f "$spdk_nvme_cli/spdk" + ln -sf "$rootdir" "$spdk_nvme_cli/spdk" + + make -j$(nproc) LDFLAGS="$(make -s -C $spdk_nvme_cli/spdk ldflags)" + popd +} + function _start_stub() { # Disable ASLR for multi-process testing. SPDK does support using DPDK multi-process, # but ASLR can still be unreliable in some cases. diff --git a/test/nvme/spdk_nvme_cli.sh b/test/nvme/spdk_nvme_cli.sh index ee01f653b..516a16f48 100755 --- a/test/nvme/spdk_nvme_cli.sh +++ b/test/nvme/spdk_nvme_cli.sh @@ -10,31 +10,13 @@ if [[ $(uname) != "Linux" ]]; then exit 1 fi -if [ -z "${DEPENDENCY_DIR}" ]; then - echo DEPENDENCY_DIR not defined! - exit 1 -fi - -spdk_nvme_cli="${DEPENDENCY_DIR}/nvme-cli" - -if [ ! -d $spdk_nvme_cli ]; then - echo "nvme-cli repository not found at $spdk_nvme_cli; skipping tests." - exit 1 -fi - -# Build against the version of SPDK under test -cd $spdk_nvme_cli - -git clean -dfx - -rm -f "$spdk_nvme_cli/spdk" -ln -sf "$rootdir" "$spdk_nvme_cli/spdk" - -make -j$(nproc) LDFLAGS="$(make -s -C $spdk_nvme_cli/spdk ldflags)" +nvme_cli_build trap "kill_stub; exit 1" SIGINT SIGTERM EXIT start_stub "-s 2048 -i 0 -m 0xF" +pushd ${DEPENDENCY_DIR}/nvme-cli + sed -i 's/spdk=0/spdk=1/g' spdk.conf sed -i 's/shm_id=.*/shm_id=0/g' spdk.conf for bdf in $(get_nvme_bdfs); do @@ -52,5 +34,7 @@ for bdf in $(get_nvme_bdfs); do ./nvme reset $bdf done +popd + trap - SIGINT SIGTERM EXIT kill_stub