lib/nvmf: Add nvmf_bdev_ctrlr_abort_cmd() to call spdk_bdev_abort()
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Idc9957aabe0c3c24d2d36f1ac84b847b7455e7d8 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2959 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Michael Haeuptle <michaelhaeuptle@gmail.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
f045d924fc
commit
91b80fe287
@ -693,6 +693,39 @@ spdk_nvmf_bdev_ctrlr_nvme_passthru_admin(struct spdk_bdev *bdev, struct spdk_bde
|
|||||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS;
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nvmf_bdev_ctrlr_complete_abort_cmd(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
|
||||||
|
{
|
||||||
|
struct spdk_nvmf_request *req = cb_arg;
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
req->rsp->nvme_cpl.cdw0 &= ~1U;
|
||||||
|
}
|
||||||
|
|
||||||
|
spdk_nvmf_request_complete(req);
|
||||||
|
spdk_bdev_free_io(bdev_io);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
nvmf_bdev_ctrlr_abort_cmd(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||||
|
struct spdk_io_channel *ch, struct spdk_nvmf_request *req,
|
||||||
|
struct spdk_nvmf_request *req_to_abort)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
assert((req->rsp->nvme_cpl.cdw0 & 1U) != 0);
|
||||||
|
|
||||||
|
rc = spdk_bdev_abort(desc, ch, req_to_abort, nvmf_bdev_ctrlr_complete_abort_cmd, req);
|
||||||
|
if (spdk_likely(rc == 0)) {
|
||||||
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS;
|
||||||
|
} else if (rc == -ENOMEM) {
|
||||||
|
nvmf_bdev_ctrl_queue_io(req, bdev, ch, nvmf_ctrlr_process_admin_cmd_resubmit, req);
|
||||||
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS;
|
||||||
|
} else {
|
||||||
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nvmf_bdev_ctrlr_get_dif_ctx(struct spdk_bdev *bdev, struct spdk_nvme_cmd *cmd,
|
nvmf_bdev_ctrlr_get_dif_ctx(struct spdk_bdev *bdev, struct spdk_nvme_cmd *cmd,
|
||||||
struct spdk_dif_ctx *dif_ctx)
|
struct spdk_dif_ctx *dif_ctx)
|
||||||
|
@ -309,6 +309,9 @@ int nvmf_bdev_ctrlr_dsm_cmd(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
|||||||
struct spdk_io_channel *ch, struct spdk_nvmf_request *req);
|
struct spdk_io_channel *ch, struct spdk_nvmf_request *req);
|
||||||
int nvmf_bdev_ctrlr_nvme_passthru_io(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
int nvmf_bdev_ctrlr_nvme_passthru_io(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||||
struct spdk_io_channel *ch, struct spdk_nvmf_request *req);
|
struct spdk_io_channel *ch, struct spdk_nvmf_request *req);
|
||||||
|
int nvmf_bdev_ctrlr_abort_cmd(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
||||||
|
struct spdk_io_channel *ch, struct spdk_nvmf_request *req,
|
||||||
|
struct spdk_nvmf_request *req_to_abort);
|
||||||
bool nvmf_bdev_ctrlr_get_dif_ctx(struct spdk_bdev *bdev, struct spdk_nvme_cmd *cmd,
|
bool nvmf_bdev_ctrlr_get_dif_ctx(struct spdk_bdev *bdev, struct spdk_nvme_cmd *cmd,
|
||||||
struct spdk_dif_ctx *dif_ctx);
|
struct spdk_dif_ctx *dif_ctx);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user