numam-spdk/lib/nvmf
Andreas Economides 93db90f7f3 nvmf/vfio-user: fix SQ race condition
The host driver should do a wmb() before it updates the SQ tail doorbell
to ensure that any writes to the SQ are guaranteed to be visible if a
doorbell update is visible (a store-release) - and indeed, this is what
the Linux NVMe driver does.

Therefore, we require a rmb() after we read the tail doorbell in order
to synchronise properly with the host driver (we need a load-acquire),
and guarantee that the updates to the SQ are visisble to us.

Signed-off-by: Andreas Economides <andreas.economides@nutanix.com>
Change-Id: I57eb1e1f0dfb1091a8f10f40f8ee0e2604d9268c
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9514
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: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2021-09-20 10:48:22 +00:00
..
ctrlr_bdev.c nvmf: In zcopy, delay setting req->data until end of start operation 2021-07-27 14:53:39 +00:00
ctrlr_discovery.c nvmf: remove a bdev_module.h #include 2021-05-11 11:57:01 +00:00
ctrlr.c nvmf: clear ctrlr->listener in remove_listener 2021-09-08 08:08:59 +00:00
fc_ls.c nvmf/fc: Handle out of order fused commands. 2021-01-14 16:18:25 +00:00
fc.c lib/trace: don't pass zero as a non-argument 2021-06-28 16:17:35 +00:00
Makefile nvmf/vfio-user: don't set RESERVATION support for vfio-user transport 2021-08-25 07:27:10 +00:00
nvmf_fc.h nvmf/fc: Add flag to differentiate LS queue and non LS queue. 2021-01-14 16:18:25 +00:00
nvmf_internal.h nvmf: Fix double controller destruction when subsys is deleted 2021-09-08 08:04:04 +00:00
nvmf_rpc.c nvmf: Correct the error path of transport creation. 2021-09-08 08:08:41 +00:00
nvmf.c nvmf: Correct the error path of transport creation. 2021-09-08 08:08:41 +00:00
rdma.c lib/nvmf: removed deprecated stats API 2021-07-23 07:10:03 +00:00
spdk_nvmf.map lib/nvmf : Added support for ZCOPY 2021-07-23 08:34:43 +00:00
subsystem.c nvmf: clear ctrlr->listener in remove_listener 2021-09-08 08:08:59 +00:00
tcp.c lib/nvmf : Fixed bad response if response is sent prior to _nvmf_request_complete being called 2021-09-03 08:07:55 +00:00
transport.c nvmf: add interface to dump transport specific listen opts 2021-09-06 09:53:57 +00:00
transport.h nvmf: Allow nvmf_transport_qpair_fini to complete asynchronously. 2020-11-18 11:28:02 +00:00
vfio_user.c nvmf/vfio-user: fix SQ race condition 2021-09-20 10:48:22 +00:00