diff --git a/0026-lib-nvme-add-mutex-before-submit-admin-request.patch b/0026-lib-nvme-add-mutex-before-submit-admin-request.patch new file mode 100644 index 0000000000000000000000000000000000000000..4f35967ae207e3fd6f9f28ccac9aa68a0d2dde33 --- /dev/null +++ b/0026-lib-nvme-add-mutex-before-submit-admin-request.patch @@ -0,0 +1,57 @@ +From 4224fc348bc320803ee7af2d091353cfb0f5981b Mon Sep 17 00:00:00 2001 +From: Marcin Spiewak +Date: Wed, 20 Mar 2024 16:59:06 +0100 +Subject: [PATCH] lib/nvme: add mutex before submit admin request + +Conflict:NA +Reference:https://github.com/spdk/spdk/commit/4224fc348bc320803ee7af2d091353cfb0f5981b + +In nvme_ctrlr_cmd_identify(), the call to +nvme_ctrlr_submit_admin_request() shall be +preceeded by taking ctrlr->ctrlr_lock mutex, +like in other places in the code. + +Change-Id: Ibd4ef2aa02d906dac853e537df9a837974b6c358 +Signed-off-by: Marcin Spiewak +Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22419 +Reviewed-by: Konrad Sztyber +Tested-by: SPDK CI Jenkins +Reviewed-by: Jim Harris +--- + lib/nvme/nvme_ctrlr_cmd.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/lib/nvme/nvme_ctrlr_cmd.c b/lib/nvme/nvme_ctrlr_cmd.c +index bcc92b29c..2f00ef83c 100644 +--- a/lib/nvme/nvme_ctrlr_cmd.c ++++ b/lib/nvme/nvme_ctrlr_cmd.c +@@ -152,11 +152,14 @@ nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cnt + { + struct nvme_request *req; + struct spdk_nvme_cmd *cmd; ++ int rc; + ++ nvme_robust_mutex_lock(&ctrlr->ctrlr_lock); + req = nvme_allocate_request_user_copy(ctrlr->adminq, + payload, payload_size, + cb_fn, cb_arg, false); + if (req == NULL) { ++ nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock); + return -ENOMEM; + } + +@@ -167,7 +170,10 @@ nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cnt + cmd->cdw11_bits.identify.csi = csi; + cmd->nsid = nsid; + +- return nvme_ctrlr_submit_admin_request(ctrlr, req); ++ rc = nvme_ctrlr_submit_admin_request(ctrlr, req); ++ ++ nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock); ++ return rc; + } + + int +-- +2.27.0 + diff --git a/spdk.spec b/spdk.spec index 387814cc5d61bb8d67752e862854d481f280363b..8857cbb46a3a56b94830d0c39e068e9f6c70ded4 100644 --- a/spdk.spec +++ b/spdk.spec @@ -3,7 +3,7 @@ Name: spdk Version: 21.01.1 -Release: 12 +Release: 13 Summary: Set of libraries and utilities for high performance user-mode storage License: BSD and MIT URL: http://spdk.io @@ -33,6 +33,7 @@ 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 +Patch26: 0026-lib-nvme-add-mutex-before-submit-admin-request.patch %define package_version %{version}-%{release} @@ -203,6 +204,9 @@ mv doc/output/html/ %{install_docdir} %changelog +* Mon Apr 29 2024 Hongtao Zhang - 21.01.1-13 +- lib/nvme: add mutex before submit admin request + * Fri Mar 15 2024 wangxiaomeng - 21.01.1-12 - Fix build warning