From 425af710e555b1aa3265c7dc356baa9d4b613dfd Mon Sep 17 00:00:00 2001 From: ChenYanpan Date: Fri, 1 Nov 2024 15:22:05 +0800 Subject: [PATCH] Adapt for spdk 24.01 --- 0002-Adapt-for-spdk-24.01.patch | 372 ++++++++++++++++++++++++++++++++ hsak.spec | 13 +- 2 files changed, 381 insertions(+), 4 deletions(-) create mode 100644 0002-Adapt-for-spdk-24.01.patch diff --git a/0002-Adapt-for-spdk-24.01.patch b/0002-Adapt-for-spdk-24.01.patch new file mode 100644 index 0000000..b31a498 --- /dev/null +++ b/0002-Adapt-for-spdk-24.01.patch @@ -0,0 +1,372 @@ +From 11d4a14ab42680cf318796752d69a995e192ca2c Mon Sep 17 00:00:00 2001 +From: suweifeng +Date: Tue, 20 Aug 2024 07:29:55 +0000 +Subject: [PATCH] Adapt for spdk 24.01 + +The new version of SPDK and DPDK has changes in the underlying PCI +device operation functions, which requires referencing the self-contained +header files of SPDK to adapt to these changes. + +Signed-off-by: suweifeng +--- + CMakeLists.txt | 9 +++--- + cli/error_inject/CMakeLists.txt | 2 +- + cli/iostat_enable/CMakeLists.txt | 4 +-- + cli/list/CMakeLists.txt | 4 +-- + cli/rw/CMakeLists.txt | 4 +-- + cli/shut_down/CMakeLists.txt | 2 +- + include/bdev_rw_internal.h | 4 ++- + include/ublock_internal.h | 5 ++- + src/bdev_rw.c | 6 ++-- + src/bdev_rw_poll.c | 6 ++-- + src/ublock_bdev.c | 54 +++++++++++++++++++++++++------- + 11 files changed, 68 insertions(+), 32 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 583fec0..08332fd 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -51,12 +51,11 @@ if(CONFIG_ERR_INJC STREQUAL "y") + list(APPEND HSAK_MGR_SRC ${SRC_DIR}/ublock_smart_info_err_injc.c) + endif() + +-set(DPDK_DIR "/usr/lib64/dpdk/pmds-22.0") + +-set(DPDK_LIB_DIR "${DPDK_DIR}/lib") ++set(DPDK_LIB_DIR "/usr/lib64") + set(DPDK_STATIC_LIB_DIR "/usr/lib64") + +-set(DPDK_INC_DIR "${PROJECT_SOURCE_DIR}/dpdk_include") ++set(DPDK_INC_DIR "/usr/include/dpdk") + + add_library( + storage_bdev_rw +@@ -127,12 +126,12 @@ if(NOT DEFINED CONFIG_DEBUG) + set(CMAKE_SHARED_LINKER_FLAGS "-s") + endif() + +-set_target_properties(storage_bdev_rw PROPERTIES LINK_FLAGS "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_event -lspdk_util -lspdk_thread -lspdk_log -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive -Wl,-Bdynamic ${DPDK_LIB_DIR}/librte_eal.so ${DPDK_LIB_DIR}/librte_mempool.so ${DPDK_LIB_DIR}/librte_ring.so ${DPDK_LIB_DIR}/librte_mempool_ring.so ${DPDK_LIB_DIR}/librte_bus_pci.so ${DPDK_LIB_DIR}/librte_power.so ${DPDK_LIB_DIR}/librte_mbuf.so ${DPDK_LIB_DIR}/librte_net.so ${DPDK_LIB_DIR}/librte_ethdev.so ${DPDK_LIB_DIR}/librte_telemetry.so -Wl,--end-group -Wl,--no-whole-archive") ++set_target_properties(storage_bdev_rw PROPERTIES LINK_FLAGS "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_event -lspdk_util -lspdk_thread -lspdk_log -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive -Wl,-Bdynamic ${DPDK_LIB_DIR}/librte_eal.so ${DPDK_LIB_DIR}/librte_mempool.so ${DPDK_LIB_DIR}/librte_ring.so ${DPDK_LIB_DIR}/librte_mempool_ring.so ${DPDK_LIB_DIR}/librte_bus_pci.so ${DPDK_LIB_DIR}/librte_power.so ${DPDK_LIB_DIR}/librte_mbuf.so ${DPDK_LIB_DIR}/librte_net.so ${DPDK_LIB_DIR}/librte_ethdev.so ${DPDK_LIB_DIR}/librte_telemetry.so -Wl,--end-group -Wl,--no-whole-archive") + target_link_libraries(storage_bdev_rw PRIVATE aio pthread dl rt boundscheck uuid fuse3 rdmacm ibverbs) + + set_target_properties(storage_bdev_rw PROPERTIES NO_SONAME 1) + +-set_target_properties(storage_ublock PROPERTIES LINK_FLAGS "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic") ++set_target_properties(storage_ublock PROPERTIES LINK_FLAGS "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -lspdk_vfio_user -lspdk_dma -lcrypto -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a ${DPDK_STATIC_LIB_DIR}/librte_log.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic") + + target_link_libraries(storage_ublock PRIVATE aio pthread dl rt boundscheck uuid numa fuse3 rdmacm ibverbs) + +diff --git a/cli/error_inject/CMakeLists.txt b/cli/error_inject/CMakeLists.txt +index f1c26c6..7de45fb 100755 +--- a/cli/error_inject/CMakeLists.txt ++++ b/cli/error_inject/CMakeLists.txt +@@ -34,5 +34,5 @@ else() + endif() + + set_target_properties(libstorage-error-inject PROPERTIES LINK_FLAGS +- "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -lspdk_vmd -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_LIB_DIR}/librte_eal.a ${DPDK_LIB_DIR}/librte_mempool.a ${DPDK_LIB_DIR}/librte_ring.a ${DPDK_LIB_DIR}/librte_bus_pci.a ${DPDK_LIB_DIR}/librte_pci.a ${DPDK_LIB_DIR}/librte_acl.a ${DPDK_LIB_DIR}/librte_kvargs.a ${DPDK_LIB_DIR}/librte_power.a -Wl,--end-group -Wl,--no-whole-archive -lfuse3") ++ "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -lspdk_vmd -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_LIB_DIR}/librte_eal.a ${DPDK_LIB_DIR}/librte_mempool.a ${DPDK_LIB_DIR}/librte_ring.a ${DPDK_LIB_DIR}/librte_bus_pci.a ${DPDK_LIB_DIR}/librte_pci.a ${DPDK_LIB_DIR}/librte_acl.a ${DPDK_LIB_DIR}/librte_kvargs.a ${DPDK_LIB_DIR}/librte_power.a -Wl,--end-group -Wl,--no-whole-archive -lfuse3") + target_link_libraries(libstorage-error-inject PRIVATE aio pthread dl rt boundscheck numa uuid) +diff --git a/cli/iostat_enable/CMakeLists.txt b/cli/iostat_enable/CMakeLists.txt +index 77d8511..fffc1e2 100755 +--- a/cli/iostat_enable/CMakeLists.txt ++++ b/cli/iostat_enable/CMakeLists.txt +@@ -36,5 +36,5 @@ else() + target_compile_options(libstorage-iostat-enable PRIVATE -march=core-avx-i -m64) + endif() + +-set_target_properties(libstorage-iostat-enable PROPERTIES LINK_FLAGS "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic -lfuse3") +-target_link_libraries(libstorage-iostat-enable PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs) ++set_target_properties(libstorage-iostat-enable PROPERTIES LINK_FLAGS "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -lspdk_dma -lspdk_vfio_user -lspdk_init -lcrypto -lssl -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a ${DPDK_STATIC_LIB_DIR}/librte_log.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic -lfuse3") ++target_link_libraries(libstorage-iostat-enable PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs m z) +diff --git a/cli/list/CMakeLists.txt b/cli/list/CMakeLists.txt +index 9a9bfcd..7cf4d97 100755 +--- a/cli/list/CMakeLists.txt ++++ b/cli/list/CMakeLists.txt +@@ -36,5 +36,5 @@ else() + target_compile_options(libstorage-list PRIVATE -march=core-avx-i -m64) + endif() + +-set_target_properties(libstorage-list PROPERTIES LINK_FLAGS " -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic -lfuse3") +-target_link_libraries(libstorage-list PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs) ++set_target_properties(libstorage-list PROPERTIES LINK_FLAGS " -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_rdma -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -lspdk_dma -lspdk_vfio_user -lspdk_init -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a ${DPDK_STATIC_LIB_DIR}/librte_log.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic -lfuse3") ++target_link_libraries(libstorage-list PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs ssl crypto m z) +diff --git a/cli/rw/CMakeLists.txt b/cli/rw/CMakeLists.txt +index 31098da..17d69d2 100755 +--- a/cli/rw/CMakeLists.txt ++++ b/cli/rw/CMakeLists.txt +@@ -41,5 +41,5 @@ else() + endif() + + set_target_properties(libstorage-rw PROPERTIES LINK_FLAGS +- "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_rdma -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic -lfuse3") +-target_link_libraries(libstorage-rw PRIVATE rdmacm ibverbs aio pthread dl rt boundscheck numa uuid) ++ "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -Wl,-Bstatic -lspdk_vmd -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_rdma -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -lspdk_dma -lspdk_vfio_user -lspdk_init -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a ${DPDK_STATIC_LIB_DIR}/librte_log.a -Wl,--end-group -Wl,--no-whole-archive -Wl,-Bdynamic -lfuse3") ++target_link_libraries(libstorage-rw PRIVATE rdmacm ibverbs aio pthread dl rt boundscheck numa uuid ssl crypto m z) +diff --git a/cli/shut_down/CMakeLists.txt b/cli/shut_down/CMakeLists.txt +index 4dc7e00..fc9923d 100755 +--- a/cli/shut_down/CMakeLists.txt ++++ b/cli/shut_down/CMakeLists.txt +@@ -37,5 +37,5 @@ else() + endif() + + set_target_properties(libstorage-shutdown PROPERTIES LINK_FLAGS +- "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -lspdk_vmd -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_net -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a -Wl,--end-group -Wl,--no-whole-archive -lfuse3") ++ "-fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--whole-archive -lspdk_vmd -lspdk_event_vmd -lspdk_notify -lspdk_sock -lspdk_sock_posix -lspdk_event_sock -lspdk_bdev_nvme -lspdk_nvme -lspdk_event_bdev -lspdk_event_accel -lspdk_bdev -lspdk_accel -lspdk_trace -lspdk_conf -lspdk_util -lspdk_log -lspdk_event -lspdk_jsonrpc -lspdk_json -lspdk_rpc -lspdk_env_dpdk -lspdk_thread -Wl,--no-whole-archive -Wl,--start-group -Wl,--whole-archive ${DPDK_STATIC_LIB_DIR}/librte_eal.a ${DPDK_STATIC_LIB_DIR}/librte_mempool.a ${DPDK_STATIC_LIB_DIR}/librte_ring.a ${DPDK_STATIC_LIB_DIR}/librte_bus_pci.a ${DPDK_STATIC_LIB_DIR}/librte_pci.a ${DPDK_STATIC_LIB_DIR}/librte_acl.a ${DPDK_STATIC_LIB_DIR}/librte_kvargs.a ${DPDK_STATIC_LIB_DIR}/librte_power.a ${DPDK_STATIC_LIB_DIR}/librte_mbuf.a ${DPDK_STATIC_LIB_DIR}/librte_net.a ${DPDK_STATIC_LIB_DIR}/librte_ethdev.a ${DPDK_STATIC_LIB_DIR}/librte_telemetry.a -Wl,--end-group -Wl,--no-whole-archive -lfuse3") + target_link_libraries(libstorage-shutdown PRIVATE aio pthread dl rt boundscheck numa uuid) +diff --git a/include/bdev_rw_internal.h b/include/bdev_rw_internal.h +index a737c30..9b04da8 100755 +--- a/include/bdev_rw_internal.h ++++ b/include/bdev_rw_internal.h +@@ -8,6 +8,9 @@ + #ifndef BDEV_RW_INTERNAL_H + #define BDEV_RW_INTERNAL_H + ++#define SECUREC_NEED_ERRNO_TYPE ++#include ++ + #include + #include + #include +@@ -16,7 +19,6 @@ + #include + #include + #include +-#include + #include + + #include +diff --git a/include/ublock_internal.h b/include/ublock_internal.h +index 6e188f4..0d856e7 100755 +--- a/include/ublock_internal.h ++++ b/include/ublock_internal.h +@@ -16,11 +16,13 @@ + #ifndef __UBLOCK_INTERNAL_H__ + #define __UBLOCK_INTERNAL_H__ + ++#define SECUREC_NEED_ERRNO_TYPE ++#include ++ + #include + #include + + #include +-#include + + /* ublock RPC server */ + typedef void (*ublock_rpc_method_handler)(struct spdk_jsonrpc_request *request, +@@ -64,6 +66,7 @@ void ublock_rpc_close(void); + char *ublock_get_sockaddr_shm(const char *pci, char *ctrl_name, size_t ctrl_name_size); + char *ublock_get_sockaddr(const char *pci); + void ublock_rpc_register_method(const char *method, ublock_rpc_method_handler func); ++const char *pci_get_sysfs_path(void); + + #define UBLOCK_RPC_REGISTER(method, func) \ + static void __attribute__((constructor)) rpc_register_##func(void) \ +diff --git a/src/bdev_rw.c b/src/bdev_rw.c +index f27722a..fbeb0af 100755 +--- a/src/bdev_rw.c ++++ b/src/bdev_rw.c +@@ -46,6 +46,8 @@ pthread_mutex_t *g_libstorage_admin_op_mutex = NULL; + /* atomic lock for uio and ublock */ + uint32_t *g_uio_ublock_lock = NULL; + ++extern struct nvme_bdev_ctrlr * nvme_bdev_ctrlr_get_by_name(const char *name); ++ + static int uio_ublock_lock_init(void) + { + int shm_fd = shm_open(UIO_UBLOCK_SHARE_LOCK, O_CREAT | O_RDWR | O_EXCL, S_IRUSR | S_IWUSR); +@@ -1049,7 +1051,7 @@ static int32_t libstorage_attach_ns_to_ctrlr(const char *ctrlName, uint32_t nsid + return -EINVAL; + } + +- nvme = nvme_ctrlr_get_by_name(ctrlName); ++ nvme = nvme_bdev_ctrlr_get_by_name(ctrlName); + if (nvme != NULL) { + ctrlr = spdk_nvme_ctrlr_get_by_ctrlr(nvme); + } +@@ -1259,7 +1261,7 @@ int32_t libstorage_delete_namespace(const char *pctrlName, uint32_t nsid) + spdk_set_thread(g_masterThread); + libstorage_process_mutex_lock(g_libstorage_admin_op_mutex); + +- nvme = nvme_ctrlr_get_by_name(pctrlName); ++ nvme = nvme_bdev_ctrlr_get_by_name(pctrlName); + if (nvme != NULL) { + ctrlr = spdk_nvme_ctrlr_get_by_ctrlr(nvme); + } +diff --git a/src/bdev_rw_poll.c b/src/bdev_rw_poll.c +index accbdc1..52074a8 100755 +--- a/src/bdev_rw_poll.c ++++ b/src/bdev_rw_poll.c +@@ -323,9 +323,9 @@ void LibstoragePollExitCheckResource(void) + if (bdev_desc != NULL) { + bdev = spdk_bdev_desc_get_bdev(bdev_desc); + +- (void)pthread_mutex_lock(&bdev->internal.mutex); ++ (void)spdk_spin_lock(&bdev->internal.spinlock); + bdev->internal.status = SPDK_BDEV_STATUS_REMOVING; +- (void)pthread_mutex_unlock(&bdev->internal.mutex); ++ (void)spdk_spin_unlock(&bdev->internal.spinlock); + + /* NVMe resources are released when the module exits */ + spdk_bdev_close(bdev_desc); +@@ -770,7 +770,7 @@ int32_t libstorage_init_with_reactor(void) + } + + libstorage_notify_dpdk_init(); +- ret = spdk_reactors_init(); ++ ret = spdk_reactors_init(SPDK_DEFAULT_MSG_MEMPOOL_SIZE); + if (ret != 0) { + SPDK_ERRLOG("Invalid reactor mask.\n"); + return ret; +diff --git a/src/ublock_bdev.c b/src/ublock_bdev.c +index 8ab3ef6..fc610d9 100755 +--- a/src/ublock_bdev.c ++++ b/src/ublock_bdev.c +@@ -18,8 +18,10 @@ + #include + #include + #include +-#include +-#include ++#include ++#include ++#include ++#include + #include + #include + #include +@@ -83,6 +85,30 @@ static void completion_poll_status_set_done(void *cb_arg, const struct spdk_nvme + status->done = true; + } + ++/** List of PCI devices */ ++RTE_TAILQ_HEAD(rte_pci_device_list, rte_pci_device); ++/** List of PCI drivers */ ++RTE_TAILQ_HEAD(rte_pci_driver_list, rte_pci_driver); ++ ++struct rte_pci_bus { ++ struct rte_bus bus; /**< Inherit the generic class */ ++ struct rte_pci_device_list device_list; /**< List of PCI devices */ ++ struct rte_pci_driver_list driver_list; /**< List of PCI drivers */ ++}; ++ ++const char *pci_get_sysfs_path(void) ++{ ++ const char *path = NULL; ++ ++ path = getenv("SYSFS_PCI_DEVICES"); ++ if (path == NULL) { ++ return "/sys/bus/pci/devices"; ++ } ++ ++ return path; ++} ++ ++ + static int ublock_uio_lock_init(void) + { + int shm_fd = shm_open(UBLOCK_UIO_SHARE_LOCK, O_CREAT | O_RDWR | O_EXCL, S_IRUSR | S_IWUSR); +@@ -739,7 +765,7 @@ static bool ublock_is_device_path(const struct rte_pci_device *dev) + return false; + } + +- sys_path = rte_pci_get_sysfs_path(); ++ sys_path = pci_get_sysfs_path(); + rc = snprintf_s(dirname, PATH_MAX, + strlen(sys_path) + strlen(pci) + 1, + "%s/%s", sys_path, pci); +@@ -872,6 +898,7 @@ static void attach_cb(void *cb_ctx, + struct spdk_nvme_ctrlr *ctrlr, + const struct spdk_nvme_ctrlr_opts *opts) + { ++#define IO_TIMEOUT_US 30000000 + if (cb_ctx == NULL) { + SPDK_WARNLOG("[ublock] wrong input when spdk_nvme_probe attach\n"); + return; +@@ -880,7 +907,8 @@ static void attach_cb(void *cb_ctx, + #ifdef DEBUG + SPDK_NOTICELOG("[ublock] Attached to %s\n", trid->traddr); + #endif +- spdk_nvme_ctrlr_register_timeout_callback(ctrlr, 150000000, timeout_cb, NULL); /* 150000000 is 150s timeout */ ++ spdk_nvme_ctrlr_register_timeout_callback(ctrlr, IO_TIMEOUT_US, ++ 150000000, timeout_cb, NULL); /* 150000000 is 150s timeout */ + bdev->ctrlr = ctrlr; + } + +@@ -989,6 +1017,7 @@ static int ublock_parse_bdev_ctrlr_info(struct ublock_bdev *bdev) + int ret; + uint32_t nsid; + struct spdk_pci_device *pci_dev = NULL; ++ struct spdk_nvme_ns *ns; + + pci_dev = spdk_nvme_ctrlr_get_pci_device(bdev->ctrlr); + if (pci_dev == NULL) { +@@ -1000,15 +1029,16 @@ static int ublock_parse_bdev_ctrlr_info(struct ublock_bdev *bdev) + SPDK_ERRLOG("[ublock] failed to get active nsid\n"); + return -1; + } +- bdev->info.sector_size = spdk_nvme_ns_get_sector_size(&bdev->ctrlr->ns[nsid - 1]); ++ ns = spdk_nvme_ctrlr_get_ns(bdev->ctrlr, nsid); ++ bdev->info.sector_size = spdk_nvme_ns_get_sector_size(ns); + if (bdev->ctrlr->cdata.oacs.ns_manage == 0) { + /* nvme not support ns management */ +- bdev->info.cap_size = spdk_nvme_ns_get_size(&bdev->ctrlr->ns[nsid - 1]); ++ bdev->info.cap_size = spdk_nvme_ns_get_size(ns); + } else { + /* nvme support ns management */ + bdev->info.cap_size = bdev->ctrlr->cdata.tnvmcap[0]; + } +- bdev->info.md_size = spdk_nvme_ns_get_md_size(&bdev->ctrlr->ns[nsid - 1]); ++ bdev->info.md_size = spdk_nvme_ns_get_md_size(ns); + bdev->info.device_id = spdk_pci_device_get_device_id(pci_dev); + bdev->info.subsystem_device_id = spdk_pci_device_get_subdevice_id(pci_dev); + bdev->info.vendor_id = bdev->ctrlr->cdata.vid; +@@ -1292,7 +1322,7 @@ static int _ublock_get_SMART_info_from_local(const char *pci, uint32_t nsid, + { + int ret; + int fd = -1; +- struct spdk_nvme_transport_id trid; ++ struct spdk_nvme_transport_id trid = {0x0}; + struct ublock_bdev bdev; + struct spdk_nvme_health_information_page *all_smart_info = (struct spdk_nvme_health_information_page *)smart_info; + +@@ -1433,7 +1463,7 @@ static int _ublock_get_error_log_info_from_local(const char *pci, uint32_t err_e + { + int ret; + int fd = -1; +- struct spdk_nvme_transport_id trid; ++ struct spdk_nvme_transport_id trid = {0X0}; + struct ublock_bdev bdev; + + if (pci == NULL || errlog_info == NULL) { +@@ -1536,7 +1566,7 @@ exit: + static int _ublock_nvme_ctrlr_shutdown_reset_from_local(const char *pci, bool reset_flag) + { + int fd = -1; +- struct spdk_nvme_transport_id trid; ++ struct spdk_nvme_transport_id trid = {0x0}; + struct ublock_bdev bdev; + int ret = 0; + +@@ -1650,7 +1680,7 @@ static int _ublock_get_log_page_from_local(const char *pci, uint8_t log_page, ui + { + int rc; + struct ublock_bdev bdev; +- struct spdk_nvme_transport_id trid; ++ struct spdk_nvme_transport_id trid = {0x0}; + int fd = -1; + struct completion_poll_status status; + +@@ -1752,7 +1782,7 @@ static int _ublock_nvme_admin_passthru_local(const char *pci, void *cmd, void *b + { + int rc; + struct ublock_bdev bdev; +- struct spdk_nvme_transport_id trid; ++ struct spdk_nvme_transport_id trid = {0x0}; + struct completion_poll_status status; + + if (pci == NULL || cmd == NULL || buf == NULL || nbytes > UBLOCK_ADMIN_CMD_BUF_MAX_SIZE) { +-- +2.43.0 + diff --git a/hsak.spec b/hsak.spec index 7a002be..3016088 100644 --- a/hsak.spec +++ b/hsak.spec @@ -1,7 +1,7 @@ %global debug_package %{nil} name: hsak Version: 1.0 -Release: 3 +Release: 4 Summary: Hybrid Storage Acceleration Kit, which is an IO software stack that provides high bandwidth and low latency for new storage media. @@ -21,18 +21,20 @@ BuildRequires: libuuid libuuid-devel BuildRequires: fuse3 fuse3-devel BuildRequires: cmake gcc-c++ BuildRequires: numactl-libs numactl-devel +BuildRequires: zlib-devel # Install dependencies Requires: fuse3 dpdk Conflicts: spdk Patch0001: 0001-Fix-compile-error-with-gcc-12.03.patch +Patch0002: 0002-Adapt-for-spdk-24.01.patch %description Hybrid storage Acceleration Kit %package devel -License: Other uncritical OpenSource License +License: Mulan PSL v2 Summary: Includes Files and Libraries mandatory for Development Group: openEuler/openEuler Requires: %{name}%{?_isa} = %{version}-%{release} @@ -46,7 +48,7 @@ libraries. %package tools Group: Development/Tools Summary: Tools for Development -License: Proprietary LICENSE +License: Mulan PSL v2 Requires: %{name}%{?_isa} = %{version}-%{release} AutoReqProv: on @@ -56,7 +58,7 @@ This package contains command line tools needed to development and operations. %prep %autosetup -p1 -n %{name}-v%{version} -cp /usr/lib64/dpdk/pmds-22.0/include ./dpdk_include -rf +cp /usr/include/dpdk ./dpdk_include -rf %build mkdir -p build @@ -123,6 +125,9 @@ strip $RPM_BUILD_ROOT/usr/bin/libstorage-iostat-enable %postun -p /sbin/ldconfig %changelog +* Tue Aug 20 2024 suweifeng 1.0-4 +- Adapt for spdk 24.01 + * Wed Jul 19 2023 suweifeng 1.0-3 - Fix compile error with gcc 12.03 -- Gitee