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: Jim Harris <james.r.harris@intel.com>
Change-Id: I1bce0e3b1f0edee2f4d002edf3aaa7e6c16d9677

Reviewed-on: https://review.gerrithub.io/422321
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Liang Yan <liang.z.yan@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Seth Howell <seth.howell5141@gmail.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Jim Harris 2018-08-14 08:43:32 -07:00 committed by Changpeng Liu
parent 5b900148e5
commit 9ee4942130

View File

@ -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);