bdev/nvme: Return error when creating NVMe bdev with separate metadata
Bdev don't support APIs that passes metadata not interleaved with logical block data. So, return error explicitly when creating NVMe bdev with separate metadata for now. Change-Id: I0776e72232c8e7758ad11b405e7e4914e779d131 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/c/444011 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
8736e00f0d
commit
6afc800d93
@ -794,6 +794,13 @@ nvme_ctrlr_create_bdev(struct nvme_ctrlr *nvme_ctrlr, uint32_t nsid)
|
||||
if (bdev->disk.md_len != 0) {
|
||||
nsdata = spdk_nvme_ns_get_data(ns);
|
||||
bdev->disk.md_interleave = nsdata->flbas.extended;
|
||||
if (!bdev->disk.md_interleave) {
|
||||
SPDK_ERRLOG("Bdev doesn't support metadata not intereleaved with block data\n");
|
||||
free(bdev->disk.name);
|
||||
nvme_ctrlr->ref--;
|
||||
memset(bdev, 0, sizeof(*bdev));
|
||||
return -EINVAL;
|
||||
}
|
||||
bdev->disk.dif_type = (enum spdk_dif_type)spdk_nvme_ns_get_pi_type(ns);
|
||||
if (bdev->disk.dif_type != SPDK_DIF_DISABLE) {
|
||||
bdev->disk.dif_is_head_of_md = nsdata->dps.md_start;
|
||||
|
Loading…
Reference in New Issue
Block a user