blobfs_bdev: Use spdk_bdev_create_bs_dev_ext() instead of spdk_bdev_create_bs_dev_from_desc()

Replace all calls of spdk_bdev_create_bs_dev_from_desc() and
spdk_bdev_open_ext() by calls of spdk_bdev_create_bs_dev_ext()
including unit tests.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Idb9dc5a10f6e221c26e82e0194930cb7a2071dae

Change-Id: I61e577db9e26ef3e1c3e2e4093ad66922a178f34
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4723
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Shuhei Matsumoto 2020-10-15 07:37:34 +09:00 committed by Tomasz Zawadzki
parent b6cbf872eb
commit 2842056073
2 changed files with 38 additions and 90 deletions

View File

@ -123,7 +123,6 @@ spdk_blobfs_bdev_detect(const char *bdev_name,
{ {
struct blobfs_bdev_operation_ctx *ctx; struct blobfs_bdev_operation_ctx *ctx;
struct spdk_bs_dev *bs_dev; struct spdk_bs_dev *bs_dev;
struct spdk_bdev_desc *desc;
int rc; int rc;
ctx = calloc(1, sizeof(*ctx)); ctx = calloc(1, sizeof(*ctx));
@ -138,19 +137,10 @@ spdk_blobfs_bdev_detect(const char *bdev_name,
ctx->cb_fn = cb_fn; ctx->cb_fn = cb_fn;
ctx->cb_arg = cb_arg; ctx->cb_arg = cb_arg;
rc = spdk_bdev_open_ext(bdev_name, true, blobfs_bdev_event_cb, NULL, &desc); rc = spdk_bdev_create_bs_dev_ext(bdev_name, blobfs_bdev_event_cb, NULL, &bs_dev);
if (rc != 0) { if (rc != 0) {
SPDK_INFOLOG(blobfs_bdev, "Failed to open bdev(%s): %s\n", ctx->bdev_name, SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev (%s)",
spdk_strerror(rc)); bdev_name);
goto invalid;
}
bs_dev = spdk_bdev_create_bs_dev_from_desc(desc);
if (bs_dev == NULL) {
SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev desc");
rc = -ENOMEM;
spdk_bdev_close(desc);
goto invalid; goto invalid;
} }
@ -172,7 +162,6 @@ spdk_blobfs_bdev_create(const char *bdev_name, uint32_t cluster_sz,
struct blobfs_bdev_operation_ctx *ctx; struct blobfs_bdev_operation_ctx *ctx;
struct spdk_blobfs_opts blobfs_opt; struct spdk_blobfs_opts blobfs_opt;
struct spdk_bs_dev *bs_dev; struct spdk_bs_dev *bs_dev;
struct spdk_bdev_desc *desc;
int rc; int rc;
ctx = calloc(1, sizeof(*ctx)); ctx = calloc(1, sizeof(*ctx));
@ -187,20 +176,10 @@ spdk_blobfs_bdev_create(const char *bdev_name, uint32_t cluster_sz,
ctx->cb_fn = cb_fn; ctx->cb_fn = cb_fn;
ctx->cb_arg = cb_arg; ctx->cb_arg = cb_arg;
/* Creation requires WRITE operation */ rc = spdk_bdev_create_bs_dev_ext(bdev_name, blobfs_bdev_event_cb, NULL, &bs_dev);
rc = spdk_bdev_open_ext(bdev_name, true, blobfs_bdev_event_cb, NULL, &desc); if (rc) {
if (rc != 0) { SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev (%s)\n",
SPDK_INFOLOG(blobfs_bdev, "Failed to open bdev(%s): %s\n", ctx->bdev_name, bdev_name);
spdk_strerror(rc));
goto invalid;
}
bs_dev = spdk_bdev_create_bs_dev_from_desc(desc);
if (bs_dev == NULL) {
SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev desc\n");
rc = -ENOMEM;
spdk_bdev_close(desc);
goto invalid; goto invalid;
} }
@ -305,7 +284,6 @@ spdk_blobfs_bdev_mount(const char *bdev_name, const char *mountpoint,
{ {
struct blobfs_bdev_operation_ctx *ctx; struct blobfs_bdev_operation_ctx *ctx;
struct spdk_bs_dev *bs_dev; struct spdk_bs_dev *bs_dev;
struct spdk_bdev_desc *desc;
int rc; int rc;
ctx = calloc(1, sizeof(*ctx)); ctx = calloc(1, sizeof(*ctx));
@ -321,19 +299,10 @@ spdk_blobfs_bdev_mount(const char *bdev_name, const char *mountpoint,
ctx->cb_fn = cb_fn; ctx->cb_fn = cb_fn;
ctx->cb_arg = cb_arg; ctx->cb_arg = cb_arg;
rc = spdk_bdev_open_ext(bdev_name, true, blobfs_bdev_fuse_event_cb, ctx, &desc); rc = spdk_bdev_create_bs_dev_ext(bdev_name, blobfs_bdev_fuse_event_cb, ctx, &bs_dev);
if (rc != 0) { if (rc != 0) {
SPDK_INFOLOG(blobfs_bdev, "Failed to open bdev(%s): %s\n", ctx->bdev_name, SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev (%s)",
spdk_strerror(rc)); bdev_name);
goto invalid;
}
bs_dev = spdk_bdev_create_bs_dev_from_desc(desc);
if (bs_dev == NULL) {
SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev desc");
rc = -ENOMEM;
spdk_bdev_close(desc);
goto invalid; goto invalid;
} }

View File

@ -39,8 +39,7 @@
int g_fserrno; int g_fserrno;
bool g_bdev_open_ext_fail = false; bool g_bdev_create_bs_dev_ext_fail = false;
bool g_bdev_create_bs_dev_from_desc_fail = false;
bool g_fs_load_fail = false; bool g_fs_load_fail = false;
bool g_fs_unload_fail = false; bool g_fs_unload_fail = false;
bool g_bs_bdev_claim_fail = false; bool g_bs_bdev_claim_fail = false;
@ -48,34 +47,35 @@ bool g_blobfs_fuse_start_fail = false;
struct blobfs_bdev_operation_ctx *g_fs_ctx; struct blobfs_bdev_operation_ctx *g_fs_ctx;
const char *g_bdev_name = "ut_bdev"; const char *g_bdev_name = "ut_bdev";
struct spdk_bdev g_bdev;
int
spdk_bdev_open_ext(const char *bdev_name, bool write, spdk_bdev_event_cb_t event_cb,
void *event_ctx, struct spdk_bdev_desc **_desc)
{
if (g_bdev_open_ext_fail) {
return -1;
}
return 0;
}
static void static void
bs_dev_destroy(struct spdk_bs_dev *dev) bs_dev_destroy(struct spdk_bs_dev *dev)
{ {
} }
struct spdk_bs_dev * static struct spdk_bdev *
spdk_bdev_create_bs_dev_from_desc(struct spdk_bdev_desc *desc) bs_dev_get_base_bdev(struct spdk_bs_dev *dev)
{
return &g_bdev;
}
int
spdk_bdev_create_bs_dev_ext(const char *bdev_name, spdk_bdev_event_cb_t event_cb,
void *event_ctx, struct spdk_bs_dev **_bs_dev)
{ {
static struct spdk_bs_dev bs_dev; static struct spdk_bs_dev bs_dev;
if (g_bdev_create_bs_dev_from_desc_fail) { if (g_bdev_create_bs_dev_ext_fail) {
return NULL; return -EINVAL;
} }
bs_dev.destroy = bs_dev_destroy; bs_dev.destroy = bs_dev_destroy;
return &bs_dev; bs_dev.get_base_bdev = bs_dev_get_base_bdev;
*_bs_dev = &bs_dev;
return 0;
} }
void void
@ -195,19 +195,12 @@ blobfs_bdev_op_complete(void *cb_arg, int fserrno)
static void static void
spdk_blobfs_bdev_detect_test(void) spdk_blobfs_bdev_detect_test(void)
{ {
/* spdk_bdev_open_ext() fails */ /* spdk_bdev_create_bs_dev_ext() fails */
g_bdev_open_ext_fail = true; g_bdev_create_bs_dev_ext_fail = true;
spdk_blobfs_bdev_detect(g_bdev_name, blobfs_bdev_op_complete, NULL); spdk_blobfs_bdev_detect(g_bdev_name, blobfs_bdev_op_complete, NULL);
CU_ASSERT(g_fserrno != 0); CU_ASSERT(g_fserrno != 0);
g_bdev_open_ext_fail = false; g_bdev_create_bs_dev_ext_fail = false;
/* spdk_bdev_create_bs_dev_from_desc() fails */
g_bdev_create_bs_dev_from_desc_fail = true;
spdk_blobfs_bdev_detect(g_bdev_name, blobfs_bdev_op_complete, NULL);
CU_ASSERT(g_fserrno != 0);
g_bdev_create_bs_dev_from_desc_fail = false;
/* spdk_fs_load() fails */ /* spdk_fs_load() fails */
g_fs_load_fail = true; g_fs_load_fail = true;
@ -233,19 +226,12 @@ spdk_blobfs_bdev_create_test(void)
{ {
uint32_t cluster_sz = 1024 * 1024; uint32_t cluster_sz = 1024 * 1024;
/* spdk_bdev_open_ext() fails */ /* spdk_bdev_create_bs_dev_ext() fails */
g_bdev_open_ext_fail = true; g_bdev_create_bs_dev_ext_fail = true;
spdk_blobfs_bdev_create(g_bdev_name, cluster_sz, blobfs_bdev_op_complete, NULL); spdk_blobfs_bdev_create(g_bdev_name, cluster_sz, blobfs_bdev_op_complete, NULL);
CU_ASSERT(g_fserrno != 0); CU_ASSERT(g_fserrno != 0);
g_bdev_open_ext_fail = false; g_bdev_create_bs_dev_ext_fail = false;
/* spdk_bdev_create_bs_dev_from_desc() fails */
g_bdev_create_bs_dev_from_desc_fail = true;
spdk_blobfs_bdev_create(g_bdev_name, cluster_sz, blobfs_bdev_op_complete, NULL);
CU_ASSERT(g_fserrno != 0);
g_bdev_create_bs_dev_from_desc_fail = false;
/* spdk_bs_bdev_claim() fails */ /* spdk_bs_bdev_claim() fails */
g_bs_bdev_claim_fail = true; g_bs_bdev_claim_fail = true;
@ -279,19 +265,12 @@ spdk_blobfs_bdev_mount_test(void)
#ifdef SPDK_CONFIG_FUSE #ifdef SPDK_CONFIG_FUSE
const char *mountpoint = "/mnt"; const char *mountpoint = "/mnt";
/* spdk_bdev_open_ext() fails */ /* spdk_bdev_create_bs_dev_ext() fails */
g_bdev_open_ext_fail = true; g_bdev_create_bs_dev_ext_fail = true;
spdk_blobfs_bdev_mount(g_bdev_name, mountpoint, blobfs_bdev_op_complete, NULL); spdk_blobfs_bdev_mount(g_bdev_name, mountpoint, blobfs_bdev_op_complete, NULL);
CU_ASSERT(g_fserrno != 0); CU_ASSERT(g_fserrno != 0);
g_bdev_open_ext_fail = false; g_bdev_create_bs_dev_ext_fail = false;
/* spdk_bdev_create_bs_dev_from_desc() fails */
g_bdev_create_bs_dev_from_desc_fail = true;
spdk_blobfs_bdev_mount(g_bdev_name, mountpoint, blobfs_bdev_op_complete, NULL);
CU_ASSERT(g_fserrno != 0);
g_bdev_create_bs_dev_from_desc_fail = false;
/* spdk_bs_bdev_claim() fails */ /* spdk_bs_bdev_claim() fails */
g_bs_bdev_claim_fail = true; g_bs_bdev_claim_fail = true;