blob: add check for supported underlying dev block lengths
Fail spdk_bs_init() if the dev being used has an LBA size that is larger than a metadata page or not evenly divisible by the size of a metadata page. Change-Id: I0e0ca747ecd5b6039c20fb6a885382bde4527158 Signed-off-by: Paul Luse <paul.e.luse@intel.com> Reviewed-on: https://review.gerrithub.io/374182 Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
d21ec1f00d
commit
a5014efc2b
@ -1480,6 +1480,13 @@ spdk_bs_init(struct spdk_bs_dev *dev, struct spdk_bs_opts *o,
|
||||
|
||||
SPDK_TRACELOG(SPDK_TRACE_BLOB, "Initializing blobstore on dev %p\n", dev);
|
||||
|
||||
if ((sizeof(struct spdk_blob_md_page) % dev->blocklen) != 0) {
|
||||
SPDK_ERRLOG("unsupported dev block length of %d\n",
|
||||
dev->blocklen);
|
||||
cb_fn(cb_arg, NULL, -EINVAL);
|
||||
return;
|
||||
}
|
||||
|
||||
if (o) {
|
||||
opts = *o;
|
||||
} else {
|
||||
|
@ -95,6 +95,12 @@ blob_init(void)
|
||||
|
||||
init_dev(&dev);
|
||||
|
||||
/* should fail for an unsupported blocklen */
|
||||
dev.blocklen = 500;
|
||||
spdk_bs_init(&dev, NULL, bs_op_with_handle_complete, NULL);
|
||||
CU_ASSERT(g_bserrno == -EINVAL);
|
||||
|
||||
init_dev(&dev);
|
||||
spdk_bs_init(&dev, NULL, bs_op_with_handle_complete, NULL);
|
||||
CU_ASSERT(g_bserrno == 0);
|
||||
SPDK_CU_ASSERT_FATAL(g_bs != NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user