Spdk/test/unit/lib/nvme
Evgeniy Kochetov 834e3c5a0e nvme: Fix submission queue overflow
SPDK can submit more commands to remote NVMf target than allowed by
negotiated queue size. SPDK submits up to SQSIZE commands, but only
SQSIZE-1 are allowed.

Here is a relevant quote from NVMe over Fabrics rev.1.1a ch.2.4.1
“Submission Queue Flow Control Negotiation”:

If SQ flow control is disabled, then the host should limit the number
of outstanding commands for a queue pair to be less than the size of
the Submission Queue. If the controller detects that the number of
outstanding commands for a queue pair is greater than or equal to the
size of the Submission Queue, then the controller shall:

a) stop processing commands and set the Controller Fatal
Status (CSTS.CFS) bit to ‘1’ (refer to section 10.5 in the NVMe Base
specification); and

b) terminate the NVMe Transport connection and end the association
between the host and the controller.

Signed-off-by: Evgeniy Kochetov <evgeniik@nvidia.com>
Change-Id: Ifbcf5d51911fc4ddcea1f7cde3135571648606f3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11413
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2022-02-10 15:22:08 +00:00
..
nvme_ctrlr_cmd.c nvme: Do not track a separate active namespace list 2022-01-14 08:35:10 +00:00
nvme_ctrlr_ocssd_cmd.c nvme: Do not track a separate active namespace list 2022-01-14 08:35:10 +00:00
nvme_ctrlr.c ut/nvme_ctrlr: initialize mutex for portability 2022-01-27 08:15:26 +00:00
nvme_cuse.c nvme: Add metadata support to io commands 2022-01-14 11:10:13 +00:00
nvme_fabric.c nvme/fabric: extract prop set/get to separate sync/async functions 2021-09-16 07:16:52 +00:00
nvme_io_msg.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme_ns_cmd.c UT/NVMe: Fix compilation warnings 2022-01-19 09:04:27 +00:00
nvme_ns_ocssd_cmd.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme_ns.c spelling: test 2021-12-03 08:13:22 +00:00
nvme_opal.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme_pcie_common.c nvme/pcie: only set qpair state from qpair's thread 2021-10-25 19:53:14 +00:00
nvme_pcie.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme_poll_group.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme_qpair.c nvme: guard admin qpair error injection queue 2022-01-19 09:05:36 +00:00
nvme_quirks.c test: optimize unit test .gitignore files 2021-08-20 07:29:57 +00:00
nvme_rdma.c nvme: Fix submission queue overflow 2022-02-10 15:22:08 +00:00
nvme_tcp.c nvme: Fix submission queue overflow 2022-02-10 15:22:08 +00:00
nvme_transport.c nvme: Limit spdk_nvme_poll_group_remove() to use only for disconnected qpairs 2022-01-19 08:44:09 +00:00
nvme.c spelling: test 2021-12-03 08:13:22 +00:00
Makefile test/nvme_opal: build nvme_opal unittest file 2021-06-07 07:24:47 +00:00