Spdk/test
Niklas Cassel 014baeb8ef nvme: add support for ZNS zone append vector variant
We already have support for spdk_nvme_zns_zone_append(),
add support for spdk_nvme_zns_zone_appendv() (zone append with
NVME_PAYLOAD_TYPE_SGL).

_nvme_ns_cmd_rw() currently performs verification of the SGL,
if the parameter check_sgl is set. This parameter is set for all
calls with payload of type NVME_PAYLOAD_TYPE_SGL.

In order to be able to perform the same check_sgl verfication on
zone append vectors, we need to refactor _nvme_ns_cmd_rw() a bit.

Setting check_sgl ensures that _nvme_ns_cmd_split_request_sgl() or
_nvme_ns_cmd_split_request_prp() gets called.

These functions will split an oversized I/O into several different
requests. However, they also iterate the SGE entries, verifies that
the total payload size, total SGE entries is not too many, and that
buffers are properly aligned. A proper request will not get split.

For zone append, splitting a request into several is not allowed,
however, we still want the verification part to be done, such that
(e.g.) a non first/last SGE which is not page aligned, will cause
the whole request to be rejected.
(In the case of spdk_nvme_ns_cmd_write(), a non first/last SGE which
is not page aligned will instead cause the request to be split.)

An alternative would be to try to rip out the verification part from
_nvme_ns_cmd_split_request_sgl() and _nvme_ns_cmd_split_request_prp().
However, that is non-trivial, and would most likely end up with a lot
of duplicated code, which would easily get out of sync.

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Change-Id: I2728acdcadeb70b1f0ed628704df19e75d14dcca
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6248
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2021-02-17 10:17:22 +00:00
..
accel_engine accel_engine test: Add the test case for accel_engine. 2021-01-21 15:49:40 +00:00
app test/app/stub: fix a null pointer passed as argument 'H' 2021-02-08 16:13:09 +00:00
bdev bdevperf: do not append cpumask to thread name 2021-02-10 08:30:40 +00:00
blobfs build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +00:00
blobstore scheduler: Change main core frequency dynamically 2021-01-22 18:31:25 +00:00
common test/vm_setup: fix LTS release checkout 2021-02-05 13:47:12 +00:00
compress script/gen_nvme: do not generate legacy configuration 2020-10-22 17:08:41 +00:00
config_converter scripts/config_converter: skip sections not present in legacy config 2021-01-15 08:32:10 +00:00
cpp_headers queue_extras: use SPDK_CONTAINEROF 2019-10-07 15:06:01 +00:00
dd test/dd: Lower the number of block size tests 2020-08-20 09:27:21 +00:00
dpdk_memory_utility build: Output executables from the app directory to build/bin 2020-06-15 15:27:16 +00:00
env env/dpdk: Use the DPDK device count for IOMMU mapping 2021-01-22 18:32:53 +00:00
event test/scheduler: application to test behaviour of schedulers 2021-01-22 18:31:25 +00:00
external_code libvfio-user: set COMMON_CFLAGS for external_code tests 2021-01-21 12:51:13 +00:00
ftl scripts: replace PCI_WHITELIST with PCI_ALLOWED 2020-12-03 09:41:07 +00:00
fuzz test/iscsi: remove VPP tests 2020-08-17 08:19:46 +00:00
ioat build: Example applications build to build/example 2020-06-15 15:27:16 +00:00
iscsi_tgt script/gen_nvme: do not generate legacy configuration 2020-10-22 17:08:41 +00:00
json_config lib/bdev: delay bdev_register notification til after examine 2021-01-15 08:28:57 +00:00
lvol test/lvol: rename lvol test script 2020-10-20 08:54:53 +00:00
make so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
nvme test/aer: modify help case to return 0 2021-02-08 16:13:29 +00:00
nvmf test/nvmf_vfio_user: add one more device to the target 2021-02-09 11:31:16 +00:00
ocf test/ocf: remove unused nvme_cfg() function 2020-11-05 09:37:55 +00:00
openstack script/gen_nvme: do not generate legacy configuration 2020-10-22 17:08:41 +00:00
pmem build: Output executables from the app directory to build/bin 2020-06-15 15:27:16 +00:00
rpc build: Output executables from the app directory to build/bin 2020-06-15 15:27:16 +00:00
rpc_client build: use DEPDIRS variables to build SPDK_LIB_LIST 2020-12-18 09:40:01 +00:00
scheduler test/scheduler: Rewrite the balanced() test 2021-02-16 08:36:23 +00:00
spdkcli Revert "lib/event: do not spawn a thread for each reactor" 2021-02-01 08:04:51 +00:00
unit nvme: add support for ZNS zone append vector variant 2021-02-17 10:17:22 +00:00
vhost lib/vhost: force cpumask to be subset of application's CPU mask 2021-02-04 08:35:08 +00:00
vmd test: replace VMD_WHITELIST with VMD_ALLOWED 2020-12-03 09:41:07 +00:00
Makefile build: add option to disable building unit tests 2020-03-10 09:12:21 +00:00
spdk_cunit.h test: remove leftover spdk_cunit declaration 2018-07-06 22:47:56 +00:00