numam-spdk/module/bdev
Shuhei Matsumoto 962c4c3800 bdev/nvme: Fix a degradation that I/O gets queued infinitely
We noticed the difference between the SPDK 21.10 and the latest master
in a test.

The simplified scenario is as follows:
1. Start SPDK NVMe-oF target
2. Run bdevperf for the target with -f parameter to suppress exit
   on failure.
3. Kill the target after I/O started.

With the SPDK 21.10, bdevperf retries failed I/Os and exits after
the test time is over.

With the latest SPDK master, bdevperf hungs and does not exit even
after the test time is over.

The cause was as follows:

reset ctrlr is repeated very quickly (once per 10ms by default) and hence
I/Os were queued infinitely because nvme_io_path_is_failed() returned
false if nvme_ctrlr is resetting.

We should queue I/O when nvme_ctrlr is resetting only if reset is throttoled
and fail-fast for the repeated failures is supported.

Hence in this patch, fix the degradation and remove the related unit
test cases.

Reported-by: Evgeniy Kochetov <evgeniik@nvidia.com>
Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I4047d42dc44488a05264c6a841d101a7c371358b
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11062
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-01-17 14:25:15 +00:00
..
aio bdev/aio: return void from bdev_aio_readv/writev 2021-09-02 07:42:31 +00:00
compress spelling: module 2021-11-30 09:05:32 +00:00
crypto spelling: module 2021-11-30 09:05:32 +00:00
delay bdev/delay: zero-copy support 2022-01-12 08:20:11 +00:00
error bdev/error: properly initialize value of num for inject_error RPC 2021-04-15 21:41:05 +00:00
ftl spelling: module 2021-11-30 09:05:32 +00:00
gpt spelling: module 2021-11-30 09:05:32 +00:00
iscsi bdev/iscsi: unregister conn poller when idle 2021-10-07 09:22:37 +00:00
lvol bdev/lvol: asserting lvol ptr before dereference 2021-08-24 07:18:54 +00:00
malloc bdev_malloc: exit early in case of no acceleration task 2022-01-14 08:35:32 +00:00
null lib/bdev: added spdk_bdev_module_fini_done() 2021-08-23 08:49:56 +00:00
nvme bdev/nvme: Fix a degradation that I/O gets queued infinitely 2022-01-17 14:25:15 +00:00
ocf spelling: module 2021-11-30 09:05:32 +00:00
passthru bdev: Add API to get SPDK memory domains used by bdev 2021-08-20 07:26:10 +00:00
pmem lib/bdev: added spdk_bdev_module_fini_done() 2021-08-23 08:49:56 +00:00
raid spelling: module 2021-11-30 09:05:32 +00:00
rbd bdev/rbd: Support config_param and config_file simultaneously for rbd_register_cluster 2022-01-17 09:44:56 +00:00
split splite/vbdev_split: Free base part bdev on the error path. 2021-03-02 08:02:58 +00:00
uring so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
virtio lib/bdev: added spdk_bdev_module_fini_done() 2021-08-23 08:49:56 +00:00
zone_block spelling: module 2021-11-30 09:05:32 +00:00
Makefile bdev: move bdev_rpc library contents 2020-09-25 11:43:42 +00:00