nvmf: Expose bdev's PI setting to NVMe-oF Initiator
This patch expose backend's bdev's PI setting to the corresponding NVMe-oF Initiator by Ideintify command, and removes the check if block size is 512 multiple. These change enables NVMe-oF Initiator to send extended LBA payload. Change-Id: Ia7aa8332d36f056872a515b6da90c83112edb909 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/c/445056 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
815f82b17b
commit
df99e28158
@ -115,7 +115,33 @@ spdk_nvmf_bdev_ctrlr_identify_ns(struct spdk_nvmf_ns *ns, struct spdk_nvme_ns_da
|
||||
nsdata->nuse = num_blocks;
|
||||
nsdata->nlbaf = 0;
|
||||
nsdata->flbas.format = 0;
|
||||
nsdata->lbaf[0].ms = spdk_bdev_get_md_size(bdev);
|
||||
nsdata->lbaf[0].lbads = spdk_u32log2(spdk_bdev_get_block_size(bdev));
|
||||
if (nsdata->lbaf[0].ms != 0) {
|
||||
nsdata->flbas.extended = 1;
|
||||
nsdata->mc.extended = 1;
|
||||
nsdata->mc.pointer = 0;
|
||||
nsdata->dps.md_start = spdk_bdev_is_dif_head_of_md(bdev);
|
||||
|
||||
switch (spdk_bdev_get_dif_type(bdev)) {
|
||||
case SPDK_DIF_TYPE1:
|
||||
nsdata->dpc.pit1 = 1;
|
||||
nsdata->dps.pit = SPDK_NVME_FMT_NVM_PROTECTION_TYPE1;
|
||||
break;
|
||||
case SPDK_DIF_TYPE2:
|
||||
nsdata->dpc.pit2 = 1;
|
||||
nsdata->dps.pit = SPDK_NVME_FMT_NVM_PROTECTION_TYPE2;
|
||||
break;
|
||||
case SPDK_DIF_TYPE3:
|
||||
nsdata->dpc.pit3 = 1;
|
||||
nsdata->dps.pit = SPDK_NVME_FMT_NVM_PROTECTION_TYPE3;
|
||||
break;
|
||||
default:
|
||||
SPDK_ERRLOG("Unknown DIF type: %d\n", spdk_bdev_get_dif_type(bdev));
|
||||
assert(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
nsdata->noiob = spdk_bdev_get_optimal_io_boundary(bdev);
|
||||
nsdata->nmic.can_share = 1;
|
||||
|
||||
|
@ -995,12 +995,6 @@ spdk_nvmf_subsystem_add_ns(struct spdk_nvmf_subsystem *subsystem, struct spdk_bd
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (spdk_bdev_get_block_size(bdev) % 512) {
|
||||
SPDK_ERRLOG("Block size %u for Bdev %s is not supported now\n",
|
||||
spdk_bdev_get_block_size(bdev), spdk_bdev_get_name(bdev));
|
||||
return 0;
|
||||
}
|
||||
|
||||
spdk_nvmf_ns_opts_get_defaults(&opts, sizeof(opts));
|
||||
if (user_opts) {
|
||||
memcpy(&opts, user_opts, spdk_min(sizeof(opts), opts_size));
|
||||
|
Loading…
Reference in New Issue
Block a user