Spdk/lib
Dariusz Stojaczyk face9eb258 virtio: add mb() before checking notify flag
The kernel vhost target enables notifying after processing
each interrupt in a following manner.

 * unset NO_NOTIFY flag
 * mb()
 * check avail ring for slipped requests

And we do the following after issuing each I/O.

 * update avail ring
 * check NO_NOTIFY

If NO_NOTIFY check is reordered and read first, we might read
old `true` value, and avail ring might be updated after the
kernel has already done its check. This easily leads to deadlock.

Change-Id: I6bb4490775dfed6fb2987e97c39b713054ae26ad
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/396499
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
2018-02-06 19:27:46 -05:00
..
bdev Remove trailing whitespace before \n in printf() 2018-02-06 11:16:50 -05:00
blob blobstore: move free xattr's to separate function 2018-02-02 16:58:06 -05:00
blobfs blobfs: return the correct file length. 2018-01-11 15:50:01 -05:00
conf conf: Remove use of perror() for strdup() failure 2017-12-15 16:13:27 -05:00
copy build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
cunit include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
env_dpdk util: extend cpumask to hold more than 64 cpus 2018-01-25 18:51:50 -05:00
event rpc: remove [Rpc] configuration file section 2018-02-06 11:15:39 -05:00
ioat build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
iscsi iscsi: Consolidating checking uniqueness of IG into register/unregister 2018-02-06 10:54:42 -05:00
json utf.h: remove #include "spdk/json.h" 2018-01-31 14:37:16 -05:00
jsonrpc util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
log log: rename SPDK_TRACE_* to SPDK_LOG_* 2017-12-07 12:23:19 -05:00
lvol blobstore: move xattrs parameters passed as options to separate structure 2018-02-02 16:58:06 -05:00
nbd nbd: improve nbd to handle overlapped I/O 2018-01-16 09:59:21 -05:00
net iscsi: remove idle connection handling 2018-01-22 23:22:17 -05:00
nvme nvme/pcie: limit max completions based on queue size 2018-01-05 12:45:28 -05:00
nvmf nvme: add asynchronous event configuration definition 2018-02-06 18:14:41 -05:00
rocksdb env_spdk: make sure the Randomaccessfile opened as rocksdb posix env. 2018-01-12 12:57:23 -05:00
rpc build: remove $(ENV_CFLAGS) where not necessary 2018-01-03 12:05:59 -05:00
scsi scsi: ensure bdlen is initialized before use 2018-01-24 16:45:49 -05:00
trace util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
ut_mock test/mock: add pthread_self 2017-09-19 17:15:15 -04:00
util util: extend cpumask to hold more than 64 cpus 2018-01-25 18:51:50 -05:00
vhost Remove trailing whitespace before \n in printf() 2018-02-06 11:16:50 -05:00
virtio virtio: add mb() before checking notify flag 2018-02-06 19:27:46 -05:00
Makefile virtio: add new library virtio 2017-12-26 13:03:29 -05:00