numam-spdk/module/bdev
Shuhei Matsumoto 47b0d4275c bdev/nvme: Support abort IO by using spdk_nvme_ctrlr_cmd_abort_ext()
Change NVMe bdev module to enable abort as IO type.

Change _bdev_nvme_submit_request() to process abort request when the
IO type is abort.

The current thread tries aborting I/O command in the I/O qpair first.
If no I/O command to abort was found, send message to the thread which
is registered when creating controller. The controller thread tries
aborting admin command in the admin qpair next. If no admin command
to abort was found, complete the abort request with failure.

spdk_nvme_ctrlr_cmd_abort_ext() is used to try aborting command whose
cb_arg matches. qpair is set to NULL when trying to abort admin command.

Before calling spdk_nvme_ctrlr_cmd_abort_ext(), save the current
thread to process admin command completion correctly.

spdk_bdev_abort() supports any bdev module other than NVMe bdev
module and does not check CDW0 but checks only if the completion
status is success or failure. So add bdev_nvme_abort_done() and
converts the NVMe completion status to the bdev completion status.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: If6aebae0ba2f6c5834ee926e161af9c4d825f341
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2040
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Reviewed-by: Michael Haeuptle <michaelhaeuptle@gmail.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
2020-07-14 07:54:42 +00:00
..
aio pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
compress pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
crypto bdev/crypto: Stop access bdev_io->internal from bdev module and fix an issue 2020-05-21 09:19:23 +00:00
delay bdev/delay: Return poller status based on completions number 2020-07-08 07:54:38 +00:00
error lib and module: remove remaining _spdk prefixes. 2020-06-01 13:07:30 +00:00
ftl mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
gpt mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
iscsi pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
lvol lib and module: remove remaining _spdk prefixes. 2020-06-01 13:07:30 +00:00
malloc bdev/malloc: Always return failure but support I/O type ABORT 2020-06-09 07:37:29 +00:00
null pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
nvme bdev/nvme: Support abort IO by using spdk_nvme_ctrlr_cmd_abort_ext() 2020-07-14 07:54:42 +00:00
ocf pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
passthru bdev/passthru: Support I/O type ABORT 2020-06-09 07:37:29 +00:00
pmem mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
raid all: Fix warnings found by gcc 9.3.0 and 9.3.1 2020-06-02 09:51:57 +00:00
rbd pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
rpc mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
split mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
uring pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
virtio pollers: Fix pollers to return correct busy status 2020-07-07 07:29:31 +00:00
zone_block mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
Makefile bdev/ftl: Remove NVMe dependencies 2020-01-15 12:24:44 +00:00