Spdk/module/bdev
Alex Michon 2bc134eb4b bdev/nvme: Fix aborting fuse commands
When sending a fused compare and write command, we pass a callback
bdev_nvme_comparev_and_writev_done that we expect to be called twice
before marking the io as completed. In order to detect if a call to
bdev_nvme_comparev_and_writev_done is the first or the second one, we
currently rely on the opcode in cdw0. However, cdw0 may be set to 0,
especially when aborting the command. This may cause use-after-free
issues and this may call the user callbacks twice instead of once.
Use a bit in the nvme_bdev_io instead to keep track of the number of
calls to bdev_nvme_comparev_and_writev_done.

Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Change-Id: I0474329e87648e44b08998d0552b2a9dd5d34ac2
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12180
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2022-04-26 07:47:09 +00:00
..
aio bdev/aio: Use bdev_open_ext() for rescan instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
compress bdev/compress: Update error handling in IO submission path 2022-03-31 09:34:52 +00:00
crypto module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
delay bdev/delay: Find delay_bdev directly from g_delay_node list 2022-04-04 09:57:43 +00:00
error bdev/error: Use bdev_open_ext() to inject error instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
ftl module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
gpt vbdev_gpt: Report memory domains 2022-04-04 09:57:56 +00:00
iscsi module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
lvol so_ver: increase all major versions 2022-01-31 15:29:56 +00:00
malloc module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
null bdev/null: Use bdev_open_ext() for resize instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
nvme bdev/nvme: Fix aborting fuse commands 2022-04-26 07:47:09 +00:00
ocf ocf/rpc: Add RPC method to manage sequential cutoff 2022-04-01 08:31:32 +00:00
passthru module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
pmem bdev/pmem: add support for IO_TYPE_FLUSH 2022-04-11 07:43:23 +00:00
raid bdev/raid: stop the raid bdev in raid_bdev_destruct 2022-04-13 08:33:19 +00:00
rbd bdev/rbd: Use bdev_open_ext() for resize instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
split bdev/split: Use bdev_open_ext() for creation instead of bdev_get_by_name() 2022-04-04 09:57:43 +00:00
uring module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
virtio module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
zone_block module/bdev: Use spdk_bdev_unregister_by_name() if possible 2022-04-04 09:57:43 +00:00
Makefile bdev: move bdev_rpc library contents 2020-09-25 11:43:42 +00:00