lib/nvme: Fix Abort Command Limit to process as 0's based value
SPDK NVMe driver had processed ACL as 1's based value by mistake, and SPDK NVMe-oF target sets ACL to 0. Hence If NVMe driver connects to SPDK NVMe-oF transport, spdk_nvme_ctrlr_cmd_abort() always queued abort request. Fix this bug to process ACL as 0's based value in spdk_nvme_ctrlr_cmd_abort(). Besides, initialize ACL explicitly to 0 in spdk_nvmf_ctrlr_identify_ctrlr() for clarification. Signed-off-by: Michael Haeuptle <michael.haeuptle@hpe.com> Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Id4f3a469776cdab88bcc6f41e7893885a7b78d8c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2513 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Michael Haeuptle <michaelhaeuptle@gmail.com>
This commit is contained in:
parent
10c4193363
commit
9d4751a550
@ -628,7 +628,8 @@ spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair
|
||||
cmd->cdw10_bits.abort.sqid = sqid;
|
||||
cmd->cdw10_bits.abort.cid = cid;
|
||||
|
||||
if (ctrlr->outstanding_aborts >= ctrlr->cdata.acl) {
|
||||
/* ACL is a 0's based value. */
|
||||
if (ctrlr->outstanding_aborts >= ctrlr->cdata.acl + 1U) {
|
||||
STAILQ_INSERT_TAIL(&ctrlr->queued_aborts, req, stailq);
|
||||
rc = 0;
|
||||
} else {
|
||||
|
@ -1872,6 +1872,8 @@ spdk_nvmf_ctrlr_identify_ctrlr(struct spdk_nvmf_ctrlr *ctrlr, struct spdk_nvme_c
|
||||
cdata->cmic.multi_host = 1;
|
||||
cdata->oaes.ns_attribute_notices = 1;
|
||||
cdata->ctratt.host_id_exhid_supported = 1;
|
||||
/* TODO: Concurrent execution of multiple abort commands. */
|
||||
cdata->acl = 0;
|
||||
cdata->aerl = 0;
|
||||
cdata->frmw.slot1_ro = 1;
|
||||
cdata->frmw.num_slots = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user