nvmf: set noiob no larger than mdts
Signed-off-by: Piotr Pelplinski <piotr.pelplinski@intel.com> Change-Id: I875cc9d6a6bd1e9e9ac25ca9103a2070226ac236 Reviewed-on: https://review.gerrithub.io/428877 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
ddda03ef64
commit
acca82acf2
@ -1143,6 +1143,7 @@ spdk_nvmf_ctrlr_identify_ns(struct spdk_nvmf_ctrlr *ctrlr,
|
||||
{
|
||||
struct spdk_nvmf_subsystem *subsystem = ctrlr->subsys;
|
||||
struct spdk_nvmf_ns *ns;
|
||||
uint32_t max_num_blocks;
|
||||
|
||||
if (cmd->nsid == 0 || cmd->nsid > subsystem->max_nsid) {
|
||||
SPDK_ERRLOG("Identify Namespace for invalid NSID %u\n", cmd->nsid);
|
||||
@ -1166,6 +1167,13 @@ spdk_nvmf_ctrlr_identify_ns(struct spdk_nvmf_ctrlr *ctrlr,
|
||||
|
||||
spdk_nvmf_bdev_ctrlr_identify_ns(ns, nsdata);
|
||||
|
||||
/* Due to bug in the Linux kernel NVMe driver we have to set noiob no larger than mdts */
|
||||
max_num_blocks = ctrlr->admin_qpair->transport->opts.max_io_size /
|
||||
(1U << nsdata->lbaf[nsdata->flbas.format].lbads);
|
||||
if (nsdata->noiob > max_num_blocks) {
|
||||
nsdata->noiob = max_num_blocks;
|
||||
}
|
||||
|
||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||
}
|
||||
|
||||
|
@ -689,7 +689,9 @@ static void
|
||||
test_identify_ns(void)
|
||||
{
|
||||
struct spdk_nvmf_subsystem subsystem = {};
|
||||
struct spdk_nvmf_ctrlr ctrlr = { .subsys = &subsystem };
|
||||
struct spdk_nvmf_transport transport = {};
|
||||
struct spdk_nvmf_qpair admin_qpair = { .transport = &transport};
|
||||
struct spdk_nvmf_ctrlr ctrlr = { .subsys = &subsystem, .admin_qpair = &admin_qpair };
|
||||
struct spdk_nvme_cmd cmd = {};
|
||||
struct spdk_nvme_cpl rsp = {};
|
||||
struct spdk_nvme_ns_data nsdata = {};
|
||||
|
Loading…
Reference in New Issue
Block a user