Commit 9ee49421 authored by Jim Harris's avatar Jim Harris Committed by Changpeng Liu
Browse files

bdev/gpt: fail more gracefully on extended block size bdevs



The GPT module isn't designed currently to support extended
block sizes like 520 or 4104, and we don't really have a good
way to put GPT down on one of these devices anyways.

So just check the block size when examining a new bdev, and
fail immediately if it's not an even multiple of 512.

Long-term, this should probably be a DEBUG print and not an
ERRLOG, but while we work through the bdev implications
of extended block sizes, keep it as an ERRLOG to facilitate
debugging.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I1bce0e3b1f0edee2f4d002edf3aaa7e6c16d9677

Reviewed-on: https://review.gerrithub.io/422321


Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarLiang Yan <liang.z.yan@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarSeth Howell <seth.howell5141@gmail.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 5b900148
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -388,6 +388,13 @@ vbdev_gpt_examine(struct spdk_bdev *bdev)
		return;
	}

	if (spdk_bdev_get_block_size(bdev) % 512 != 0) {
		SPDK_ERRLOG("GPT module does not support block size %" PRIu32 " for bdev %s\n",
			    spdk_bdev_get_block_size(bdev), spdk_bdev_get_name(bdev));
		spdk_bdev_module_examine_done(&gpt_if);
		return;
	}

	rc = vbdev_gpt_read_gpt(bdev);
	if (rc) {
		spdk_bdev_module_examine_done(&gpt_if);