Spdk/examples/nvme
Niklas Cassel 09dd961b35 nvme/fio_plugin: fix report_zones
Commit f69367c788 ("fio_nvme: defer qpair allocation to file_open
callback") moved the qpair allocation from spdk_fio_setup() to
spdk_fio_open(). This broke spdk_fio_report_zones(), which needs a
qpair in order to get the initial state of the zones.

setup_files() in FIO calls td->io_ops->setup() (spdk_fio_setup()),
followed by zbd_init_files(), which calls zbd_init_zone_info(),
which calls zbd_create_zone_info(), which calls parse_zone_info(),
which calls zbd_report_zones(), which calls td->io_ops->report_zones()
(spdk_fio_report_zones()).

i.e. spdk_fio_report_zones() will always be called directly after
spdk_fio_setup(). .report_zones() is even called before the per
thread ioengine .init() callback.

Therefore, spdk_fio_report_zones() is called before the ioengine
.open_file() callback.

This is done in order to ensure that all threads will share the same
zbd_info struct, which contains the per zone locks.

Since SPDK nvme ioengine no longer initializes the qpairs in .setup(),
create a temporary qpair in .report_zones().

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Change-Id: Ic376ac7844e40fceff092900ae7e4714bccf38e6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7590
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2021-04-26 16:16:42 +00:00
..
abort example/abort: Fix missing optarg. 2021-03-31 08:49:37 +00:00
arbitration examples: use "main" instead of "master" 2020-12-03 09:41:07 +00:00
cmb_copy nvme/cmb_copy: disable submission queue in CMB 2020-04-22 09:18:22 +00:00
fio_plugin nvme/fio_plugin: fix report_zones 2021-04-26 16:16:42 +00:00
hello_world examples/nvme/hello_world: call exit() on read error 2020-10-23 13:47:09 +00:00
hotplug build: fix duplicate spdk.common.mk includes 2019-05-22 14:51:01 +00:00
identify examples/identify: Get PMR size 2021-04-22 20:10:21 +00:00
nvme_manage examples: Use PRId64 for portability 2020-11-20 11:01:11 +00:00
perf perf: Use max_completions when process poll group 2021-04-21 23:57:57 +00:00
pmr_persistence examples/pmr_persistence: Add PMR example application 2021-04-22 20:10:21 +00:00
reconnect NVMe/vfio-user: add initial version vfio-user transport to NVMe driver 2021-01-21 05:00:18 +00:00
Makefile examples/pmr_persistence: Add PMR example application 2021-04-22 20:10:21 +00:00