From 9ee49421308716e314a60837382c96a7c8802fda Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Tue, 14 Aug 2018 08:43:32 -0700 Subject: [PATCH] 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 Change-Id: I1bce0e3b1f0edee2f4d002edf3aaa7e6c16d9677 Reviewed-on: https://review.gerrithub.io/422321 Reviewed-by: Ben Walker Reviewed-by: Liang Yan Reviewed-by: Changpeng Liu Reviewed-by: Seth Howell Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins --- lib/bdev/gpt/vbdev_gpt.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/bdev/gpt/vbdev_gpt.c b/lib/bdev/gpt/vbdev_gpt.c index 3d2c203d1..1c83e1522 100644 --- a/lib/bdev/gpt/vbdev_gpt.c +++ b/lib/bdev/gpt/vbdev_gpt.c @@ -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);