From bbe2ed83dc4bf62d79d5625a51355a5dea45c861 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Thu, 28 Jan 2021 18:27:57 +0800 Subject: [PATCH] nvmf/vfio_user: disable vfio_user by default Users can use "--with-vfio-user" to enable it when testing it. For CI configuration, we add a new test flag SPDK_TEST_VFIOUSER to enable CI tests. Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6139 (master) (cherry picked from commit 3b673b8431a0bda147b7efe6e3963305a0f36c7b) Change-Id: Id284df721171d01cc52491ebf4088bcc17eee147 Signed-off-by: Tomasz Zawadzki Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6181 Reviewed-by: Jim Harris Reviewed-by: Ben Walker Tested-by: SPDK CI Jenkins --- CONFIG | 2 +- configure | 42 +++++++++++-------------------- scripts/vagrant/autorun-spdk.conf | 1 + test/common/autotest_common.sh | 6 +++++ test/common/config/vm_setup.sh | 1 + test/nvmf/nvmf.sh | 2 +- 6 files changed, 24 insertions(+), 30 deletions(-) diff --git a/CONFIG b/CONFIG index 0f9752744..b5fffae55 100644 --- a/CONFIG +++ b/CONFIG @@ -121,7 +121,7 @@ CONFIG_VHOST=y CONFIG_VIRTIO=y # Build custom vfio-user transport for NVMf target and NVMe initiator. -CONFIG_VFIO_USER=y +CONFIG_VFIO_USER=n # Build with PMDK backends CONFIG_PMDK=n diff --git a/configure b/configure index 701f33b35..ec61dd73d 100755 --- a/configure +++ b/configure @@ -454,36 +454,22 @@ else fi BUILD_CMD+=(-I/usr/local/include -L/usr/local/lib) -function set_os_id_version() { - if [[ -f /etc/os-release ]]; then - source /etc/os-release - fi - - OSID=$ID - OSVERSION=$VERSION_ID - - echo "OS-ID: $OSID | OS-Version: $OSVERSION" -} - if [[ "${CONFIG[VFIO_USER]}" = "y" ]]; then - set_os_id_version - if [[ $arch != x86_64* ]] || [[ $sys_name == "FreeBSD" ]]; then - echo "Non x86_64 and Linux platform, disable CONFIG_VFIO_USER" - CONFIG[VFIO_USER]="n" - # disable tests on ubuntu16 due to lack of macro definition in pci_regs.h - elif [[ $OSID == "ubuntu" ]] && [[ $OSVERSION == "16.04" ]]; then - echo "ubuntu16 OS, disable CONFIG_VFIO_USER" - CONFIG[VFIO_USER]="n" - elif ! hash cmake; then - echo "cmake not installed, disable CONFIG_VFIO_USER" - CONFIG[VFIO_USER]="n" - elif [[ ! -d /usr/include/json-c ]] && [[ ! -d /usr/local/include/json-c ]]; then - echo "json-c-devel not installed, disable CONFIG_VFIO_USER" - CONFIG[VFIO_USER]="n" - elif [[ ! -e /usr/include/cmocka.h ]] && [[ ! -e /usr/local/include/cmocka.h ]]; then - echo "libcmocka-devel not installed, disable CONFIG_VFIO_USER" - CONFIG[VFIO_USER]="n" + if ! hash cmake; then + echo "ERROR: --with-vfio-user requires cmake" + echo "Please install then re-run this script" + exit 1 + fi + if [[ ! -d /usr/include/json-c ]] && [[ ! -d /usr/local/include/json-c ]]; then + echo "ERROR: --with-vfio-user requires json-c-devel" + echo "Please install then re-run this script" + exit 1 + fi + if [[ ! -e /usr/include/cmocka.h ]] && [[ ! -e /usr/local/include/cmocka.h ]]; then + echo "ERROR: --with-vfio-user requires libcmocka-devel" + echo "Please install then re-run this script" + exit 1 fi fi diff --git a/scripts/vagrant/autorun-spdk.conf b/scripts/vagrant/autorun-spdk.conf index 067522c6f..18ab49740 100644 --- a/scripts/vagrant/autorun-spdk.conf +++ b/scripts/vagrant/autorun-spdk.conf @@ -9,6 +9,7 @@ SPDK_TEST_ISCSI_INITIATOR=0 SPDK_TEST_NVME=0 SPDK_TEST_NVME_CLI=0 SPDK_TEST_NVMF=1 +SPDK_TEST_VFIOUSER=1 SPDK_TEST_RBD=0 SPDK_TEST_CRYPTO=0 SPDK_TEST_OCF=0 diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index 328393c61..8fc383f75 100755 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -81,6 +81,8 @@ export SPDK_TEST_NVME_CLI export SPDK_TEST_NVME_CUSE : ${SPDK_TEST_NVMF=0} export SPDK_TEST_NVMF +: ${SPDK_TEST_VFIOUSER=0} +export SPDK_TEST_VFIOUSER : ${SPDK_TEST_NVMF_TRANSPORT="rdma"} export SPDK_TEST_NVMF_TRANSPORT : ${SPDK_TEST_RBD=0} @@ -422,6 +424,10 @@ function get_config_params() { config_params+=' --with-raid5' fi + if [ $SPDK_TEST_VFIOUSER -eq 1 ]; then + config_params+=' --with-vfio-user' + fi + # Check whether liburing library header exists if [ -f /usr/include/liburing/io_uring.h ] && [ $SPDK_TEST_URING -eq 1 ]; then config_params+=' --with-uring' diff --git a/test/common/config/vm_setup.sh b/test/common/config/vm_setup.sh index 2da3675f7..d43aef981 100755 --- a/test/common/config/vm_setup.sh +++ b/test/common/config/vm_setup.sh @@ -185,6 +185,7 @@ SPDK_TEST_ISCSI_INITIATOR=1 SPDK_TEST_NVME=1 SPDK_TEST_NVME_CLI=1 SPDK_TEST_NVMF=1 +SPDK_TEST_VFIOUSER=1 SPDK_TEST_RBD=1 SPDK_TEST_BLOCKDEV=1 SPDK_TEST_BLOBFS=1 diff --git a/test/nvmf/nvmf.sh b/test/nvmf/nvmf.sh index dc622a9bb..787c57d67 100755 --- a/test/nvmf/nvmf.sh +++ b/test/nvmf/nvmf.sh @@ -41,7 +41,7 @@ run_test "nvmf_invalid" test/nvmf/target/invalid.sh "${TEST_ARGS[@]}" run_test "nvmf_abort" test/nvmf/target/abort.sh "${TEST_ARGS[@]}" run_test "nvmf_ns_hotplug_stress" test/nvmf/target/ns_hotplug_stress.sh "${TEST_ARGS[@]}" -if grep -q '#define SPDK_CONFIG_VFIO_USER 1' $rootdir/include/spdk/config.h; then +if [ $SPDK_TEST_VFIOUSER -eq 1 ]; then run_test "nvmf_vfio_user" test/nvmf/target/nvmf_vfio_user.sh "${TEST_ARGS[@]}" fi