Commit 28420560 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

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: default avatarShuhei 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: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent b6cbf872
Loading
Loading
Loading
Loading
+10 −41
Original line number Diff line number Diff line
@@ -123,7 +123,6 @@ spdk_blobfs_bdev_detect(const char *bdev_name,
{
	struct blobfs_bdev_operation_ctx *ctx;
	struct spdk_bs_dev *bs_dev;
	struct spdk_bdev_desc *desc;
	int rc;

	ctx = calloc(1, sizeof(*ctx));
@@ -138,19 +137,10 @@ spdk_blobfs_bdev_detect(const char *bdev_name,
	ctx->cb_fn = cb_fn;
	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) {
		SPDK_INFOLOG(blobfs_bdev, "Failed to open bdev(%s): %s\n", ctx->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");
		rc = -ENOMEM;
		spdk_bdev_close(desc);
		SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev (%s)",
			     bdev_name);

		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 spdk_blobfs_opts blobfs_opt;
	struct spdk_bs_dev *bs_dev;
	struct spdk_bdev_desc *desc;
	int rc;

	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_arg = cb_arg;

	/* Creation requires WRITE operation */
	rc = spdk_bdev_open_ext(bdev_name, true, blobfs_bdev_event_cb, NULL, &desc);
	if (rc != 0) {
		SPDK_INFOLOG(blobfs_bdev, "Failed to open bdev(%s): %s\n", ctx->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);
	rc = spdk_bdev_create_bs_dev_ext(bdev_name, blobfs_bdev_event_cb, NULL, &bs_dev);
	if (rc) {
		SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev (%s)\n",
			     bdev_name);

		goto invalid;
	}
@@ -305,7 +284,6 @@ spdk_blobfs_bdev_mount(const char *bdev_name, const char *mountpoint,
{
	struct blobfs_bdev_operation_ctx *ctx;
	struct spdk_bs_dev *bs_dev;
	struct spdk_bdev_desc *desc;
	int rc;

	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_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) {
		SPDK_INFOLOG(blobfs_bdev, "Failed to open bdev(%s): %s\n", ctx->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");
		rc = -ENOMEM;
		spdk_bdev_close(desc);
		SPDK_INFOLOG(blobfs_bdev, "Failed to create a blobstore block device from bdev (%s)",
			     bdev_name);

		goto invalid;
	}
+26 −47
Original line number Diff line number Diff line
@@ -39,8 +39,7 @@

int g_fserrno;

bool g_bdev_open_ext_fail = false;
bool g_bdev_create_bs_dev_from_desc_fail = false;
bool g_bdev_create_bs_dev_ext_fail = false;
bool g_fs_load_fail = false;
bool g_fs_unload_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;

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)
static void
bs_dev_destroy(struct spdk_bs_dev *dev)
{
	if (g_bdev_open_ext_fail) {
		return -1;
	}

	return 0;
}

static  void
bs_dev_destroy(struct spdk_bs_dev *dev)
static struct spdk_bdev *
bs_dev_get_base_bdev(struct spdk_bs_dev *dev)
{
	return &g_bdev;
}

struct spdk_bs_dev *
spdk_bdev_create_bs_dev_from_desc(struct spdk_bdev_desc *desc)
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;

	if (g_bdev_create_bs_dev_from_desc_fail) {
		return NULL;
	if (g_bdev_create_bs_dev_ext_fail) {
		return -EINVAL;
	}

	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
@@ -195,19 +195,12 @@ blobfs_bdev_op_complete(void *cb_arg, int fserrno)
static void
spdk_blobfs_bdev_detect_test(void)
{
	/* spdk_bdev_open_ext() fails */
	g_bdev_open_ext_fail = true;
	/* spdk_bdev_create_bs_dev_ext() fails */
	g_bdev_create_bs_dev_ext_fail = true;
	spdk_blobfs_bdev_detect(g_bdev_name, blobfs_bdev_op_complete, NULL);
	CU_ASSERT(g_fserrno != 0);

	g_bdev_open_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;
	g_bdev_create_bs_dev_ext_fail = false;

	/* spdk_fs_load() fails */
	g_fs_load_fail = true;
@@ -233,19 +226,12 @@ spdk_blobfs_bdev_create_test(void)
{
	uint32_t cluster_sz = 1024 * 1024;

	/* spdk_bdev_open_ext() fails */
	g_bdev_open_ext_fail = true;
	spdk_blobfs_bdev_create(g_bdev_name, cluster_sz, blobfs_bdev_op_complete, NULL);
	CU_ASSERT(g_fserrno != 0);

	g_bdev_open_ext_fail = false;

	/* spdk_bdev_create_bs_dev_from_desc() fails */
	g_bdev_create_bs_dev_from_desc_fail = true;
	/* spdk_bdev_create_bs_dev_ext() fails */
	g_bdev_create_bs_dev_ext_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;
	g_bdev_create_bs_dev_ext_fail = false;

	/* spdk_bs_bdev_claim() fails */
	g_bs_bdev_claim_fail = true;
@@ -279,19 +265,12 @@ spdk_blobfs_bdev_mount_test(void)
#ifdef SPDK_CONFIG_FUSE
	const char *mountpoint = "/mnt";

	/* spdk_bdev_open_ext() fails */
	g_bdev_open_ext_fail = true;
	spdk_blobfs_bdev_mount(g_bdev_name, mountpoint, blobfs_bdev_op_complete, NULL);
	CU_ASSERT(g_fserrno != 0);

	g_bdev_open_ext_fail = false;

	/* spdk_bdev_create_bs_dev_from_desc() fails */
	g_bdev_create_bs_dev_from_desc_fail = true;
	/* spdk_bdev_create_bs_dev_ext() fails */
	g_bdev_create_bs_dev_ext_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;
	g_bdev_create_bs_dev_ext_fail = false;

	/* spdk_bs_bdev_claim() fails */
	g_bs_bdev_claim_fail = true;