Merged
Adapt for spdk 24.01 #11
chenyanpanAdd on Nov 1, 2024
Adapt for spdk 24.01 #11
Merged
chenyanpanAdd on Nov 1, 2024
Total: 2 files changed+381-4
@@ -0,0 +1,372 @@
1+From 11d4a14ab42680cf318796752d69a995e192ca2c Mon Sep 17 00:00:00 2001
2+From: suweifeng <suweifeng1@huawei.com>
3+Date: Tue, 20 Aug 2024 07:29:55 +0000
4+Subject: [PATCH] Adapt for spdk 24.01
5+ 
6+The new version of SPDK and DPDK has changes in the underlying PCI
7+device operation functions, which requires referencing the self-contained
8+header files of SPDK to adapt to these changes.
9+ 
10+Signed-off-by: suweifeng <suweifeng1@huawei.com>
11+---
12+ CMakeLists.txt | 9 +++---
13+ cli/error_inject/CMakeLists.txt | 2 +-
14+ cli/iostat_enable/CMakeLists.txt | 4 +--
15+ cli/list/CMakeLists.txt | 4 +--
16+ cli/rw/CMakeLists.txt | 4 +--
17+ cli/shut_down/CMakeLists.txt | 2 +-
18+ include/bdev_rw_internal.h | 4 ++-
19+ include/ublock_internal.h | 5 ++-
20+ src/bdev_rw.c | 6 ++--
21+ src/bdev_rw_poll.c | 6 ++--
22+ src/ublock_bdev.c | 54 +++++++++++++++++++++++++-------
23+ 11 files changed, 68 insertions(+), 32 deletions(-)
24+ 
25+diff --git a/CMakeLists.txt b/CMakeLists.txt
26+index 583fec0..08332fd 100755
27+--- a/CMakeLists.txt
28++++ b/CMakeLists.txt
29+@@ -51,12 +51,11 @@ if(CONFIG_ERR_INJC STREQUAL "y")
30+ list(APPEND HSAK_MGR_SRC ${SRC_DIR}/ublock_smart_info_err_injc.c)
31+ endif()
32+
33+-set(DPDK_DIR "/usr/lib64/dpdk/pmds-22.0")
34+
35+-set(DPDK_LIB_DIR "${DPDK_DIR}/lib")
36++set(DPDK_LIB_DIR "/usr/lib64")
37+ set(DPDK_STATIC_LIB_DIR "/usr/lib64")
38+
39+-set(DPDK_INC_DIR "${PROJECT_SOURCE_DIR}/dpdk_include")
40++set(DPDK_INC_DIR "/usr/include/dpdk")
41+
42+ add_library(
43+ storage_bdev_rw
44+@@ -127,12 +126,12 @@ if(NOT DEFINED CONFIG_DEBUG)
45+ set(CMAKE_SHARED_LINKER_FLAGS "-s")
46+ endif()
47+
48+-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")
49++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")
50+ target_link_libraries(storage_bdev_rw PRIVATE aio pthread dl rt boundscheck uuid fuse3 rdmacm ibverbs)
51+
52+ set_target_properties(storage_bdev_rw PROPERTIES NO_SONAME 1)
53+
54+-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")
55++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")
56+
57+ target_link_libraries(storage_ublock PRIVATE aio pthread dl rt boundscheck uuid numa fuse3 rdmacm ibverbs)
58+
59+diff --git a/cli/error_inject/CMakeLists.txt b/cli/error_inject/CMakeLists.txt
60+index f1c26c6..7de45fb 100755
61+--- a/cli/error_inject/CMakeLists.txt
62++++ b/cli/error_inject/CMakeLists.txt
63+@@ -34,5 +34,5 @@ else()
64+ endif()
65+
66+ set_target_properties(libstorage-error-inject PROPERTIES LINK_FLAGS
67+- "-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")
68++ "-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")
69+ target_link_libraries(libstorage-error-inject PRIVATE aio pthread dl rt boundscheck numa uuid)
70+diff --git a/cli/iostat_enable/CMakeLists.txt b/cli/iostat_enable/CMakeLists.txt
71+index 77d8511..fffc1e2 100755
72+--- a/cli/iostat_enable/CMakeLists.txt
73++++ b/cli/iostat_enable/CMakeLists.txt
74+@@ -36,5 +36,5 @@ else()
75+ target_compile_options(libstorage-iostat-enable PRIVATE -march=core-avx-i -m64)
76+ endif()
77+
78+-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")
79+-target_link_libraries(libstorage-iostat-enable PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs)
80++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")
81++target_link_libraries(libstorage-iostat-enable PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs m z)
82+diff --git a/cli/list/CMakeLists.txt b/cli/list/CMakeLists.txt
83+index 9a9bfcd..7cf4d97 100755
84+--- a/cli/list/CMakeLists.txt
85++++ b/cli/list/CMakeLists.txt
86+@@ -36,5 +36,5 @@ else()
87+ target_compile_options(libstorage-list PRIVATE -march=core-avx-i -m64)
88+ endif()
89+
90+-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")
91+-target_link_libraries(libstorage-list PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs)
92++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")
93++target_link_libraries(libstorage-list PRIVATE aio pthread dl rt boundscheck numa uuid rdmacm ibverbs ssl crypto m z)
94+diff --git a/cli/rw/CMakeLists.txt b/cli/rw/CMakeLists.txt
95+index 31098da..17d69d2 100755
96+--- a/cli/rw/CMakeLists.txt
97++++ b/cli/rw/CMakeLists.txt
98+@@ -41,5 +41,5 @@ else()
99+ endif()
100+
101+ set_target_properties(libstorage-rw PROPERTIES LINK_FLAGS
102+- "-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")
103+-target_link_libraries(libstorage-rw PRIVATE rdmacm ibverbs aio pthread dl rt boundscheck numa uuid)
104++ "-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")
105++target_link_libraries(libstorage-rw PRIVATE rdmacm ibverbs aio pthread dl rt boundscheck numa uuid ssl crypto m z)
106+diff --git a/cli/shut_down/CMakeLists.txt b/cli/shut_down/CMakeLists.txt
107+index 4dc7e00..fc9923d 100755
108+--- a/cli/shut_down/CMakeLists.txt
109++++ b/cli/shut_down/CMakeLists.txt
110+@@ -37,5 +37,5 @@ else()
111+ endif()
112+
113+ set_target_properties(libstorage-shutdown PROPERTIES LINK_FLAGS
114+- "-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")
115++ "-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")
116+ target_link_libraries(libstorage-shutdown PRIVATE aio pthread dl rt boundscheck numa uuid)
117+diff --git a/include/bdev_rw_internal.h b/include/bdev_rw_internal.h
118+index a737c30..9b04da8 100755
119+--- a/include/bdev_rw_internal.h
120++++ b/include/bdev_rw_internal.h
121+@@ -8,6 +8,9 @@
122+ #ifndef BDEV_RW_INTERNAL_H
123+ #define BDEV_RW_INTERNAL_H
124+
125++#define SECUREC_NEED_ERRNO_TYPE
126++#include <securec.h>
127++
128+ #include <dirent.h>
129+ #include <dlfcn.h>
130+ #include <fcntl.h>
131+@@ -16,7 +19,6 @@
132+ #include <rte_lcore.h>
133+ #include <rte_malloc.h>
134+ #include <rte_eal_memconfig.h>
135+-#include <securec.h>
136+ #include <string.h>
137+
138+ #include <sys/queue.h>
139+diff --git a/include/ublock_internal.h b/include/ublock_internal.h
140+index 6e188f4..0d856e7 100755
141+--- a/include/ublock_internal.h
142++++ b/include/ublock_internal.h
143+@@ -16,11 +16,13 @@
144+ #ifndef __UBLOCK_INTERNAL_H__
145+ #define __UBLOCK_INTERNAL_H__
146+
147++#define SECUREC_NEED_ERRNO_TYPE
148++#include <securec.h>
149++
150+ #include <spdk/jsonrpc.h>
151+ #include <spdk/nvme.h>
152+
153+ #include <sys/queue.h>
154+-#include <securec.h>
155+
156+ /* ublock RPC server */
157+ typedef void (*ublock_rpc_method_handler)(struct spdk_jsonrpc_request *request,
158+@@ -64,6 +66,7 @@ void ublock_rpc_close(void);
159+ char *ublock_get_sockaddr_shm(const char *pci, char *ctrl_name, size_t ctrl_name_size);
160+ char *ublock_get_sockaddr(const char *pci);
161+ void ublock_rpc_register_method(const char *method, ublock_rpc_method_handler func);
162++const char *pci_get_sysfs_path(void);
163+
164+ #define UBLOCK_RPC_REGISTER(method, func) \
165+ static void __attribute__((constructor)) rpc_register_##func(void) \
166+diff --git a/src/bdev_rw.c b/src/bdev_rw.c
167+index f27722a..fbeb0af 100755
168+--- a/src/bdev_rw.c
169++++ b/src/bdev_rw.c
170+@@ -46,6 +46,8 @@ pthread_mutex_t *g_libstorage_admin_op_mutex = NULL;
171+ /* atomic lock for uio and ublock */
172+ uint32_t *g_uio_ublock_lock = NULL;
173+
174++extern struct nvme_bdev_ctrlr * nvme_bdev_ctrlr_get_by_name(const char *name);
175++
176+ static int uio_ublock_lock_init(void)
177+ {
178+ int shm_fd = shm_open(UIO_UBLOCK_SHARE_LOCK, O_CREAT | O_RDWR | O_EXCL, S_IRUSR | S_IWUSR);
179+@@ -1049,7 +1051,7 @@ static int32_t libstorage_attach_ns_to_ctrlr(const char *ctrlName, uint32_t nsid
180+ return -EINVAL;
181+ }
182+
183+- nvme = nvme_ctrlr_get_by_name(ctrlName);
184++ nvme = nvme_bdev_ctrlr_get_by_name(ctrlName);
185+ if (nvme != NULL) {
186+ ctrlr = spdk_nvme_ctrlr_get_by_ctrlr(nvme);
187+ }
188+@@ -1259,7 +1261,7 @@ int32_t libstorage_delete_namespace(const char *pctrlName, uint32_t nsid)
189+ spdk_set_thread(g_masterThread);
190+ libstorage_process_mutex_lock(g_libstorage_admin_op_mutex);
191+
192+- nvme = nvme_ctrlr_get_by_name(pctrlName);
193++ nvme = nvme_bdev_ctrlr_get_by_name(pctrlName);
194+ if (nvme != NULL) {
195+ ctrlr = spdk_nvme_ctrlr_get_by_ctrlr(nvme);
196+ }
197+diff --git a/src/bdev_rw_poll.c b/src/bdev_rw_poll.c
198+index accbdc1..52074a8 100755
199+--- a/src/bdev_rw_poll.c
200++++ b/src/bdev_rw_poll.c
201+@@ -323,9 +323,9 @@ void LibstoragePollExitCheckResource(void)
202+ if (bdev_desc != NULL) {
203+ bdev = spdk_bdev_desc_get_bdev(bdev_desc);
204+
205+- (void)pthread_mutex_lock(&bdev->internal.mutex);
206++ (void)spdk_spin_lock(&bdev->internal.spinlock);
207+ bdev->internal.status = SPDK_BDEV_STATUS_REMOVING;
208+- (void)pthread_mutex_unlock(&bdev->internal.mutex);
209++ (void)spdk_spin_unlock(&bdev->internal.spinlock);
210+
211+ /* NVMe resources are released when the module exits */
212+ spdk_bdev_close(bdev_desc);
213+@@ -770,7 +770,7 @@ int32_t libstorage_init_with_reactor(void)
214+ }
215+
216+ libstorage_notify_dpdk_init();
217+- ret = spdk_reactors_init();
218++ ret = spdk_reactors_init(SPDK_DEFAULT_MSG_MEMPOOL_SIZE);
219+ if (ret != 0) {
220+ SPDK_ERRLOG("Invalid reactor mask.\n");
221+ return ret;
222+diff --git a/src/ublock_bdev.c b/src/ublock_bdev.c
223+index 8ab3ef6..fc610d9 100755
224+--- a/src/ublock_bdev.c
225++++ b/src/ublock_bdev.c
226+@@ -18,8 +18,10 @@
227+ #include <errno.h>
228+ #include <pthread.h>
229+ #include <regex.h>
230+-#include <rte_eal.h>
231+-#include <rte_bus_pci.h>
232++#include <spdk/rte_bus_pci.h>
233++#include <spdk/bus_pci_driver.h>
234++#include <spdk/rte_bus.h>
235++#include <spdk/bus_driver.h>
236+ #include <spdk/env.h>
237+ #include <spdk/event.h>
238+ #include <spdk/nvme.h>
239+@@ -83,6 +85,30 @@ static void completion_poll_status_set_done(void *cb_arg, const struct spdk_nvme
240+ status->done = true;
241+ }
242+
243++/** List of PCI devices */
244++RTE_TAILQ_HEAD(rte_pci_device_list, rte_pci_device);
245++/** List of PCI drivers */
246++RTE_TAILQ_HEAD(rte_pci_driver_list, rte_pci_driver);
247++
248++struct rte_pci_bus {
249++ struct rte_bus bus; /**< Inherit the generic class */
250++ struct rte_pci_device_list device_list; /**< List of PCI devices */
251++ struct rte_pci_driver_list driver_list; /**< List of PCI drivers */
252++};
253++
254++const char *pci_get_sysfs_path(void)
255++{
256++ const char *path = NULL;
257++
258++ path = getenv("SYSFS_PCI_DEVICES");
259++ if (path == NULL) {
260++ return "/sys/bus/pci/devices";
261++ }
262++
263++ return path;
264++}
265++
266++
267+ static int ublock_uio_lock_init(void)
268+ {
269+ int shm_fd = shm_open(UBLOCK_UIO_SHARE_LOCK, O_CREAT | O_RDWR | O_EXCL, S_IRUSR | S_IWUSR);
270+@@ -739,7 +765,7 @@ static bool ublock_is_device_path(const struct rte_pci_device *dev)
271+ return false;
272+ }
273+
274+- sys_path = rte_pci_get_sysfs_path();
275++ sys_path = pci_get_sysfs_path();
276+ rc = snprintf_s(dirname, PATH_MAX,
277+ strlen(sys_path) + strlen(pci) + 1,
278+ "%s/%s", sys_path, pci);
279+@@ -872,6 +898,7 @@ static void attach_cb(void *cb_ctx,
280+ struct spdk_nvme_ctrlr *ctrlr,
281+ const struct spdk_nvme_ctrlr_opts *opts)
282+ {
283++#define IO_TIMEOUT_US 30000000
284+ if (cb_ctx == NULL) {
285+ SPDK_WARNLOG("[ublock] wrong input when spdk_nvme_probe attach\n");
286+ return;
287+@@ -880,7 +907,8 @@ static void attach_cb(void *cb_ctx,
288+ #ifdef DEBUG
289+ SPDK_NOTICELOG("[ublock] Attached to %s\n", trid->traddr);
290+ #endif
291+- spdk_nvme_ctrlr_register_timeout_callback(ctrlr, 150000000, timeout_cb, NULL); /* 150000000 is 150s timeout */
292++ spdk_nvme_ctrlr_register_timeout_callback(ctrlr, IO_TIMEOUT_US,
293++ 150000000, timeout_cb, NULL); /* 150000000 is 150s timeout */
294+ bdev->ctrlr = ctrlr;
295+ }
296+
297+@@ -989,6 +1017,7 @@ static int ublock_parse_bdev_ctrlr_info(struct ublock_bdev *bdev)
298+ int ret;
299+ uint32_t nsid;
300+ struct spdk_pci_device *pci_dev = NULL;
301++ struct spdk_nvme_ns *ns;
302+
303+ pci_dev = spdk_nvme_ctrlr_get_pci_device(bdev->ctrlr);
304+ if (pci_dev == NULL) {
305+@@ -1000,15 +1029,16 @@ static int ublock_parse_bdev_ctrlr_info(struct ublock_bdev *bdev)
306+ SPDK_ERRLOG("[ublock] failed to get active nsid\n");
307+ return -1;
308+ }
309+- bdev->info.sector_size = spdk_nvme_ns_get_sector_size(&bdev->ctrlr->ns[nsid - 1]);
310++ ns = spdk_nvme_ctrlr_get_ns(bdev->ctrlr, nsid);
311++ bdev->info.sector_size = spdk_nvme_ns_get_sector_size(ns);
312+ if (bdev->ctrlr->cdata.oacs.ns_manage == 0) {
313+ /* nvme not support ns management */
314+- bdev->info.cap_size = spdk_nvme_ns_get_size(&bdev->ctrlr->ns[nsid - 1]);
315++ bdev->info.cap_size = spdk_nvme_ns_get_size(ns);
316+ } else {
317+ /* nvme support ns management */
318+ bdev->info.cap_size = bdev->ctrlr->cdata.tnvmcap[0];
319+ }
320+- bdev->info.md_size = spdk_nvme_ns_get_md_size(&bdev->ctrlr->ns[nsid - 1]);
321++ bdev->info.md_size = spdk_nvme_ns_get_md_size(ns);
322+ bdev->info.device_id = spdk_pci_device_get_device_id(pci_dev);
323+ bdev->info.subsystem_device_id = spdk_pci_device_get_subdevice_id(pci_dev);
324+ bdev->info.vendor_id = bdev->ctrlr->cdata.vid;
325+@@ -1292,7 +1322,7 @@ static int _ublock_get_SMART_info_from_local(const char *pci, uint32_t nsid,
326+ {
327+ int ret;
328+ int fd = -1;
329+- struct spdk_nvme_transport_id trid;
330++ struct spdk_nvme_transport_id trid = {0x0};
331+ struct ublock_bdev bdev;
332+ struct spdk_nvme_health_information_page *all_smart_info = (struct spdk_nvme_health_information_page *)smart_info;
333+
334+@@ -1433,7 +1463,7 @@ static int _ublock_get_error_log_info_from_local(const char *pci, uint32_t err_e
335+ {
336+ int ret;
337+ int fd = -1;
338+- struct spdk_nvme_transport_id trid;
339++ struct spdk_nvme_transport_id trid = {0X0};
340+ struct ublock_bdev bdev;
341+
342+ if (pci == NULL || errlog_info == NULL) {
343+@@ -1536,7 +1566,7 @@ exit:
344+ static int _ublock_nvme_ctrlr_shutdown_reset_from_local(const char *pci, bool reset_flag)
345+ {
346+ int fd = -1;
347+- struct spdk_nvme_transport_id trid;
348++ struct spdk_nvme_transport_id trid = {0x0};
349+ struct ublock_bdev bdev;
350+ int ret = 0;
351+
352+@@ -1650,7 +1680,7 @@ static int _ublock_get_log_page_from_local(const char *pci, uint8_t log_page, ui
353+ {
354+ int rc;
355+ struct ublock_bdev bdev;
356+- struct spdk_nvme_transport_id trid;
357++ struct spdk_nvme_transport_id trid = {0x0};
358+ int fd = -1;
359+ struct completion_poll_status status;
360+
361+@@ -1752,7 +1782,7 @@ static int _ublock_nvme_admin_passthru_local(const char *pci, void *cmd, void *b
362+ {
363+ int rc;
364+ struct ublock_bdev bdev;
365+- struct spdk_nvme_transport_id trid;
366++ struct spdk_nvme_transport_id trid = {0x0};
367+ struct completion_poll_status status;
368+
369+ if (pci == NULL || cmd == NULL || buf == NULL || nbytes > UBLOCK_ADMIN_CMD_BUF_MAX_SIZE) {
370+--
371+2.43.0
372+ 
@@ -1,7 +1,7 @@
1%global debug_package %{nil}1%global debug_package %{nil}
2name: hsak2name: hsak
3Version: 1.03Version: 1.0
4-Release: 34+Release: 4
5 5 
6Summary: Hybrid Storage Acceleration Kit, which is an IO software stack that provides high bandwidth and low latency for new storage media.6Summary: Hybrid Storage Acceleration Kit, which is an IO software stack that provides high bandwidth and low latency for new storage media.
7 7 
@@ -21,18 +21,20 @@ BuildRequires: libuuid libuuid-devel
21BuildRequires: fuse3 fuse3-devel21BuildRequires: fuse3 fuse3-devel
22BuildRequires: cmake gcc-c++22BuildRequires: cmake gcc-c++
23BuildRequires: numactl-libs numactl-devel23BuildRequires: numactl-libs numactl-devel
24+BuildRequires: zlib-devel
24 25 
25# Install dependencies26# Install dependencies
26Requires: fuse3 dpdk27Requires: fuse3 dpdk
27Conflicts: spdk28Conflicts: spdk
28 29 
29Patch0001: 0001-Fix-compile-error-with-gcc-12.03.patch30Patch0001: 0001-Fix-compile-error-with-gcc-12.03.patch
31+Patch0002: 0002-Adapt-for-spdk-24.01.patch
30 32 
31%description33%description
32Hybrid storage Acceleration Kit34Hybrid storage Acceleration Kit
33 35 
34%package devel36%package devel
35-License: Other uncritical OpenSource License37+License: Mulan PSL v2
36Summary: Includes Files and Libraries mandatory for Development38Summary: Includes Files and Libraries mandatory for Development
37Group: openEuler/openEuler39Group: openEuler/openEuler
38Requires: %{name}%{?_isa} = %{version}-%{release}40Requires: %{name}%{?_isa} = %{version}-%{release}
@@ -46,7 +48,7 @@ libraries.
46%package tools48%package tools
47Group: Development/Tools49Group: Development/Tools
48Summary: Tools for Development50Summary: Tools for Development
49-License: Proprietary LICENSE51+License: Mulan PSL v2
50Requires: %{name}%{?_isa} = %{version}-%{release}52Requires: %{name}%{?_isa} = %{version}-%{release}
51AutoReqProv: on53AutoReqProv: on
52 54 
@@ -56,7 +58,7 @@ This package contains command line tools needed to development and operations.
56%prep58%prep
57%autosetup -p1 -n %{name}-v%{version}59%autosetup -p1 -n %{name}-v%{version}
58 60 
59-cp /usr/lib64/dpdk/pmds-22.0/include ./dpdk_include -rf61+cp /usr/include/dpdk ./dpdk_include -rf
60 62 
61%build63%build
62mkdir -p build64mkdir -p build
@@ -123,6 +125,9 @@ strip $RPM_BUILD_ROOT/usr/bin/libstorage-iostat-enable
123%postun -p /sbin/ldconfig125%postun -p /sbin/ldconfig
124 126 
125%changelog127%changelog
128+* Tue Aug 20 2024 suweifeng <suweifeng1@huawei.com> 1.0-4
129+- Adapt for spdk 24.01
130+ 
126* Wed Jul 19 2023 suweifeng <suweifeng1@huawei.com> 1.0-3131* Wed Jul 19 2023 suweifeng <suweifeng1@huawei.com> 1.0-3
127- Fix compile error with gcc 12.03132- Fix compile error with gcc 12.03
128 133