numam-spdk/lib
Darek Stojaczyk 1ecbb6a8da vhost/compat: start polling queues prematurely
rte_vhost requires all queues to be fully initialized
in order to start I/O processing. This behavior is not
compliant with the vhost-user specification and doesn't
work with QEMU 2.12+, which will only initialize 1 I/O
queue for the SeaBIOS boot. Theoretically, we should
start polling each virtqueue individually after
receiving its SET_VRING_KICK message, but rte_vhost is
not designed to poll individual queues. So we use
a workaround to detect when a vhost session could be
potentially at that SeaBIOS stage and we mark it to
start polling as soon as its first virtqueue gets
initialized. This doesn't hurt any non-QEMU vhost slaves
and allows QEMU 2.12+ to boot correctly. SET_FEATURES
could be sent at any time, but QEMU will send it at
least once on SeaBIOS initialization - whenever
powered-up or rebooted.

Vhost sessions are still mostly started/stopped from
within rte_vhost callbacks, but now there's additional
concept of "forced" polling, in which SPDK starts
sessions manually, while rte_vhost still thinks the
sessions are stopped. This can potentially lead to cases
where a session is "started" twice, or gets destroyed
while it's still being polled (by force). Those cases
also need to be handled within this patch.

Change-Id: I70636d63e27914906ddece59cec34f1dd37ec5cd
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/446086
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2019-03-15 22:03:26 +00:00
..
bdev ocf: multicore support 2019-03-15 19:04:10 +00:00
blob lvol: add option to change clear method for lvol store creation 2019-02-28 20:50:27 +00:00
blobfs blobfs: fix the length value of file. 2019-01-17 05:04:13 +00:00
conf string: spdk_strtol to delegate additional error checking 2019-01-29 00:10:57 +00:00
copy lib/copy: unregister copy engine on finish 2018-10-15 17:42:20 +00:00
env_dpdk configure: add option not to use the internal rte_vhost copy 2019-03-13 14:26:20 +00:00
event nvmf/rdma: Add shared receive queue support 2019-03-15 19:19:17 +00:00
ftl lib/ftl: Pass errors from nvme layer only in completion callback 2019-03-15 05:03:39 +00:00
ioat ioat: reduce completion writebacks 2019-02-18 07:44:17 +00:00
iscsi iscsi: Fix performance degradation due to sock_readv 2019-03-14 23:09:56 +00:00
json json_util: add debug logs to spdk_json_decode_object function 2019-01-10 14:31:37 +00:00
jsonrpc jsonrpc: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
log app: rename traceflag cmdline option to logflag 2018-12-03 19:50:15 +00:00
lvol lvol: add option to change clear method for lvol store creation 2019-02-28 20:50:27 +00:00
nbd nbd: avoid impact to device setup by other task 2019-02-15 22:02:48 +00:00
net net: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
nvme nvme: use asynchronous probe API in spdk_nvme_connect() 2019-03-14 22:37:02 +00:00
nvmf nvmf: add reservation information to each subsystem's poll group 2019-03-15 20:45:43 +00:00
reduce reduce: fix ordering bug 2019-02-04 19:23:35 +00:00
rocksdb event: Remove arg2 from spdk_app_start() 2019-03-05 08:43:12 +00:00
rpc rpc: add spdk_rpc_is_method_allowed 2018-12-05 00:35:35 +00:00
scsi scsi: Add an API to return DIF context of bdev and CDB 2019-03-08 01:21:26 +00:00
sock sock/vpp: do not continue if buf writed is less than provided 2019-03-12 22:19:42 +00:00
thread thread: add spdk_thread_is_idle() 2019-03-01 21:38:02 +00:00
trace lib/trace: add trace_record tool 2019-01-30 06:36:25 +00:00
ut_mock thread: Eliminate use of pthread_self and thread_ids 2019-01-15 16:53:12 +00:00
util dif: Insert DIF into newly read data block by stream fashion 2019-03-13 01:40:02 +00:00
vhost vhost/compat: start polling queues prematurely 2019-03-15 22:03:26 +00:00
virtio virtio/user: don't send SET_VRING_ADDR after updating the memory table 2019-03-13 14:26:20 +00:00
Makefile ftl: Initial implementation 2019-01-11 09:15:39 +00:00