diff --git a/0024-Fix-build-warning.patch b/0024-Fix-build-warning.patch new file mode 100644 index 0000000000000000000000000000000000000000..278eba9b94dfe78ac1bb4152ac468e4f9d9a938f --- /dev/null +++ b/0024-Fix-build-warning.patch @@ -0,0 +1,129 @@ +From d3fdb05328531608736cf68880b9f39da6f3b9cd Mon Sep 17 00:00:00 2001 +From: wangxiaomeng +Date: Thu, 14 Mar 2024 17:19:12 +0800 +Subject: [PATCH] Fix build warning + +--- + app/spdk_top/spdk_top.c | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +diff --git a/app/spdk_top/spdk_top.c b/app/spdk_top/spdk_top.c +index 3c0a889..d72c26f 100644 +--- a/app/spdk_top/spdk_top.c ++++ b/app/spdk_top/spdk_top.c +@@ -674,7 +674,7 @@ print_max_len(WINDOW *win, int row, uint16_t col, uint16_t max_len, enum str_ali + snprintf(&tmp_str[max_str - DOTS_STR_LEN - 2], DOTS_STR_LEN, "%s", dots); + } + +- mvwprintw(win, row, col, tmp_str); ++ mvwprintw(win, row, col, "%s", tmp_str); + + refresh(); + wrefresh(win); +@@ -1937,19 +1937,19 @@ display_thread(struct rpc_thread_info *thread_info) + + print_left(thread_win, 3, THREAD_WIN_FIRST_COL, THREAD_WIN_WIDTH, + "Core: Idle [us]: Busy [us]:", COLOR_PAIR(5)); +- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 6, "%" PRIu64, ++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 6, "%d", + thread_info->core_num); + + if (g_interval_data) { + get_time_str(g_thread_history[thread_info->id].idle, idle_time); +- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time); ++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, "%s", idle_time); + get_time_str(g_thread_history[thread_info->id].busy, busy_time); +- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, busy_time); ++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, "%s", busy_time); + } else { + get_time_str(thread_info->idle, idle_time); +- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, idle_time); ++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 32, "%s", idle_time); + get_time_str(thread_info->busy, busy_time); +- mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, busy_time); ++ mvwprintw(thread_win, 3, THREAD_WIN_FIRST_COL + 54, "%s", busy_time); + } + + print_left(thread_win, 4, THREAD_WIN_FIRST_COL, THREAD_WIN_WIDTH, +@@ -1979,7 +1979,7 @@ display_thread(struct rpc_thread_info *thread_info) + mvwprintw(thread_win, current_row, THREAD_WIN_FIRST_COL, "%s", poller->name); + mvwprintw(thread_win, current_row, THREAD_WIN_FIRST_COL + 33, "Active"); + snprintf(run_count, MAX_POLLER_COUNT_STR_LEN, "%" PRIu64, poller->run_count); +- mvwprintw(thread_win, current_row, THREAD_WIN_FIRST_COL + 41, run_count); ++ mvwprintw(thread_win, current_row, THREAD_WIN_FIRST_COL + 41, "%s", run_count); + current_row++; + } + pollers = &thread->timed_pollers; +@@ -2108,20 +2108,20 @@ show_core(uint8_t current_page) + get_time_str(core_info[core_number]->idle, idle_time); + get_time_str(core_info[core_number]->busy, busy_time); + } +- mvwprintw(core_win, 3, CORE_WIN_FIRST_COL + 20, idle_time); ++ mvwprintw(core_win, 3, CORE_WIN_FIRST_COL + 20, "%s", idle_time); + + print_left(core_win, 5, 1, CORE_WIN_WIDTH, "Poller count: Busy time:", COLOR_PAIR(5)); + mvwprintw(core_win, 5, CORE_WIN_FIRST_COL, "%" PRIu64, + g_cores_history[core_number].pollers_count); + +- mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, busy_time); ++ mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, "%s", busy_time); + + mvwhline(core_win, 4, 1, ACS_HLINE, CORE_WIN_WIDTH - 2); + mvwhline(core_win, 6, 1, ACS_HLINE, CORE_WIN_WIDTH - 2); + print_left(core_win, 7, 1, CORE_WIN_WIDTH, "Threads on this core", COLOR_PAIR(5)); + + for (j = 0; j < core_info[core_number]->threads.threads_count; j++) { +- mvwprintw(core_win, j + 8, 1, core_info[core_number]->threads.thread[j].name); ++ mvwprintw(core_win, j + 8, 1, "%s", core_info[core_number]->threads.thread[j].name); + } + + refresh(); +@@ -2132,7 +2132,7 @@ show_core(uint8_t current_page) + while (!stop_loop) { + for (j = 0; j < core_info[core_number]->threads.threads_count; j++) { + if (j != current_threads_row) { +- mvwprintw(core_win, j + 8, 1, core_info[core_number]->threads.thread[j].name); ++ mvwprintw(core_win, j + 8, 1, "%s", core_info[core_number]->threads.thread[j].name); + } else { + print_left(core_win, j + 8, 1, CORE_WIN_WIDTH - 2, + core_info[core_number]->threads.thread[j].name, COLOR_PAIR(2)); +@@ -2204,9 +2204,9 @@ show_poller(uint8_t current_page) + mvwaddch(poller_win, 2, POLLER_WIN_WIDTH, ACS_RTEE); + + print_left(poller_win, 3, 2, POLLER_WIN_WIDTH, "Type: On thread:", COLOR_PAIR(5)); +- mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL, ++ mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL, "%s", + poller_type_str[pollers[poller_number]->type]); +- mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL + 23, pollers[poller_number]->thread_name); ++ mvwprintw(poller_win, 3, POLLER_WIN_FIRST_COL + 23, "%s", pollers[poller_number]->thread_name); + + print_left(poller_win, 4, 2, POLLER_WIN_WIDTH, "Run count:", COLOR_PAIR(5)); + +@@ -2221,7 +2221,7 @@ show_poller(uint8_t current_page) + if (pollers[poller_number]->period_ticks != 0) { + print_left(poller_win, 4, 28, POLLER_WIN_WIDTH, "Period:", COLOR_PAIR(5)); + get_time_str(g_pollers_history[poller_number].period_ticks, poller_period); +- mvwprintw(poller_win, 4, POLLER_WIN_FIRST_COL + 23, poller_period); ++ mvwprintw(poller_win, 4, POLLER_WIN_FIRST_COL + 23, "%s", poller_period); + } + mvwhline(poller_win, 5, 1, ACS_HLINE, POLLER_WIN_WIDTH - 2); + print_in_middle(poller_win, 6, 1, POLLER_WIN_WIDTH - 7, "Status:", COLOR_PAIR(5)); +@@ -2374,13 +2374,13 @@ show_stats(void) + time_last = time_now.tv_sec; + rc = get_data(); + if (rc) { +- mvprintw(g_max_row - 1, g_max_col - strlen(refresh_error) - 2, refresh_error); ++ mvprintw(g_max_row - 1, g_max_col - strlen(refresh_error) - 2, "%s", refresh_error); + } + + max_pages = refresh_tab(active_tab, current_page); + + snprintf(current_page_str, CURRENT_PAGE_STR_LEN - 1, "Page: %d/%d", current_page + 1, max_pages); +- mvprintw(g_max_row - 1, 1, current_page_str); ++ mvprintw(g_max_row - 1, 1, "%s", current_page_str); + + free_data(); + +-- +2.33.0 + diff --git a/0025-ut-rdma-Fix-GCC-10.2.0-warning.patch b/0025-ut-rdma-Fix-GCC-10.2.0-warning.patch new file mode 100644 index 0000000000000000000000000000000000000000..77f1b36a930103cec2b0f5f6d15beb5eb3571236 --- /dev/null +++ b/0025-ut-rdma-Fix-GCC-10.2.0-warning.patch @@ -0,0 +1,94 @@ +From dd5d0c45dcfc51acc80f47be0367e25c10b9436f Mon Sep 17 00:00:00 2001 +From: Alexey Marchuk +Date: Wed, 14 Apr 2021 11:27:38 +0300 +Subject: [PATCH] ut/rdma: Fix GCC 10.2.0 warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +rdma_ut.c: In function ‘test_spdk_nvmf_rdma_request_parse_sgl_with_md’: +rdma_ut.c:1152:54: warning: array subscript 10 is outside array bounds of ‘struct spdk_nvmf_rdma_request_data[1]’ [-Warray-bounds] + 1152 | aligned_buffer = (void *)((uintptr_t)((char *)&data + NVMF_DATA_BUFFER_MASK) & + | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ +rdma_ut.c:834:37: note: while referencing ‘data’ + 834 | struct spdk_nvmf_rdma_request_data data; + | ^~~~ + +The fix is to use array instead of spdk_nvmf_rdma_request_data +structure + +Change-Id: I81bd311d26037dcb9340d85abcb4ea45b20a5171 +Reported-by: G.Balaji +Signed-off-by: Alexey Marchuk +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7365 +Community-CI: Broadcom CI +Tested-by: SPDK CI Jenkins +Reviewed-by: +Reviewed-by: Shuhei Matsumoto +Reviewed-by: Jim Harris +--- + test/unit/lib/nvmf/rdma.c/rdma_ut.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/test/unit/lib/nvmf/rdma.c/rdma_ut.c b/test/unit/lib/nvmf/rdma.c/rdma_ut.c +index 8674f52..eb46a4c 100644 +--- a/test/unit/lib/nvmf/rdma.c/rdma_ut.c ++++ b/test/unit/lib/nvmf/rdma.c/rdma_ut.c +@@ -836,7 +836,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void) + union nvmf_h2c_msg cmd; + struct spdk_nvme_sgl_descriptor *sgl; + struct spdk_nvme_sgl_descriptor sgl_desc[SPDK_NVMF_MAX_SGL_ENTRIES] = {{0}}; +- struct spdk_nvmf_rdma_request_data data; ++ char data_buffer[8192]; ++ struct spdk_nvmf_rdma_request_data *data = (struct spdk_nvmf_rdma_request_data *)data_buffer; + char data2_buffer[8192]; + struct spdk_nvmf_rdma_request_data *data2 = (struct spdk_nvmf_rdma_request_data *)data2_buffer; + const uint32_t data_bs = 512; +@@ -844,7 +845,7 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void) + int rc, i; + void *aligned_buffer; + +- data.wr.sg_list = data.sgl; ++ data->wr.sg_list = data->sgl; + STAILQ_INIT(&group.group.buf_cache); + group.group.buf_cache_size = 0; + group.group.buf_cache_count = 0; +@@ -1153,8 +1154,8 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void) + sgl->unkeyed.subtype = SPDK_NVME_SGL_SUBTYPE_OFFSET; + sgl->address = 0; + rdma_req.recv->buf = (void *)&sgl_desc; +- MOCK_SET(spdk_mempool_get, &data); +- aligned_buffer = (void *)((uintptr_t)((char *)&data + NVMF_DATA_BUFFER_MASK) & ++ MOCK_SET(spdk_mempool_get, data_buffer); ++ aligned_buffer = (void *)((uintptr_t)(data_buffer + NVMF_DATA_BUFFER_MASK) & + ~NVMF_DATA_BUFFER_MASK); + + /* part 1: 2 segments each with 1 wr. io_unit_size is aligned with data_bs + md_size */ +@@ -1190,17 +1191,17 @@ test_spdk_nvmf_rdma_request_parse_sgl_with_md(void) + + CU_ASSERT(rdma_req.data.wr.wr.rdma.rkey == 0x44); + CU_ASSERT(rdma_req.data.wr.wr.rdma.remote_addr == 0x4000); +- CU_ASSERT(rdma_req.data.wr.next == &data.wr); +- CU_ASSERT(data.wr.wr.rdma.rkey == 0x44); +- CU_ASSERT(data.wr.wr.rdma.remote_addr == 0x4000 + data_bs * 4); +- CU_ASSERT(data.wr.num_sge == 4); ++ CU_ASSERT(rdma_req.data.wr.next == &data->wr); ++ CU_ASSERT(data->wr.wr.rdma.rkey == 0x44); ++ CU_ASSERT(data->wr.wr.rdma.remote_addr == 0x4000 + data_bs * 4); ++ CU_ASSERT(data->wr.num_sge == 4); + for (i = 0; i < 4; ++i) { +- CU_ASSERT(data.wr.sg_list[i].addr == (uintptr_t)((unsigned char *)aligned_buffer) + i * ++ CU_ASSERT(data->wr.sg_list[i].addr == (uintptr_t)((unsigned char *)aligned_buffer) + i * + (data_bs + md_size)); +- CU_ASSERT(data.wr.sg_list[i].length == data_bs); ++ CU_ASSERT(data->wr.sg_list[i].length == data_bs); + } + +- CU_ASSERT(data.wr.next == &rdma_req.rsp.wr); ++ CU_ASSERT(data->wr.next == &rdma_req.rsp.wr); + } + + int main(int argc, char **argv) +-- +2.33.0 + diff --git a/spdk.spec b/spdk.spec index 01a006381ebe8fa980ed980193467ce53917d39f..387814cc5d61bb8d67752e862854d481f280363b 100644 --- a/spdk.spec +++ b/spdk.spec @@ -3,7 +3,7 @@ Name: spdk Version: 21.01.1 -Release: 11 +Release: 12 Summary: Set of libraries and utilities for high performance user-mode storage License: BSD and MIT URL: http://spdk.io @@ -31,6 +31,8 @@ Patch20: 0020-configure-add-CONFIG_HAVE_ARC4RANDOM.patch Patch21: 0021-lib-bdev-return-error-when-failing-to-get-resource.patch Patch22: 0022-Fix-the-build-error-ppc64le-gnu-gcc-does-not-support.patch Patch23: 0023-Fix-probe-core-dump-while-admin-cmd-timeout.patch +Patch24: 0024-Fix-build-warning.patch +Patch25: 0025-ut-rdma-Fix-GCC-10.2.0-warning.patch %define package_version %{version}-%{release} @@ -48,7 +50,7 @@ Patch23: 0023-Fix-probe-core-dump-while-admin-cmd-timeout.patch ExclusiveArch: x86_64 aarch64 loongarch64 ppc64le BuildRequires: gcc gcc-c++ make -BuildRequires: dpdk-devel, numactl-devel, ncurses-devel +BuildRequires: dpdk-devel >= 21.11, numactl-devel, ncurses-devel BuildRequires: libiscsi-devel, libaio-devel, openssl-devel, libuuid-devel BuildRequires: libibverbs-devel, librdmacm-devel BuildRequires: CUnit, CUnit-devel @@ -201,6 +203,9 @@ mv doc/output/html/ %{install_docdir} %changelog +* Fri Mar 15 2024 wangxiaomeng - 21.01.1-12 +- Fix build warning + * Wed Mar 6 2024 Hongtao Zhang - 21.01.1-11 - Fix probe core dump while admin cmd timeout