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

lib/nbd: Use spdk_bdev_open_ext() instead of spdk_bdev_open()



This is a drop-in replacement.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I3c297b6676b53bae8a308d5732800ac05c4cebc7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4724


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent 83b57c54
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -850,13 +850,25 @@ nbd_start_kernel(void *arg)
}

static void
nbd_bdev_hot_remove(void *remove_ctx)
nbd_bdev_hot_remove(struct spdk_nbd_disk *nbd)
{
	struct spdk_nbd_disk *nbd = remove_ctx;

	spdk_nbd_stop(nbd);
}

static void
nbd_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev,
		  void *event_ctx)
{
	switch (type) {
	case SPDK_BDEV_EVENT_REMOVE:
		nbd_bdev_hot_remove(event_ctx);
		break;
	default:
		SPDK_NOTICELOG("Unsupported bdev event: type %d\n", type);
		break;
	}
}

struct spdk_nbd_start_ctx {
	struct spdk_nbd_disk	*nbd;
	spdk_nbd_start_cb	cb_fn;
@@ -994,13 +1006,6 @@ spdk_nbd_start(const char *bdev_name, const char *nbd_path,
	int				rc;
	int				sp[2];

	bdev = spdk_bdev_get_by_name(bdev_name);
	if (bdev == NULL) {
		SPDK_ERRLOG("no bdev %s exists\n", bdev_name);
		rc = -EINVAL;
		goto err;
	}

	nbd = calloc(1, sizeof(*nbd));
	if (nbd == NULL) {
		rc = -ENOMEM;
@@ -1022,12 +1027,13 @@ spdk_nbd_start(const char *bdev_name, const char *nbd_path,
	ctx->cb_arg = cb_arg;
	ctx->polling_count = NBD_BUSY_WAITING_MS * 1000ULL / NBD_BUSY_POLLING_INTERVAL_US;

	rc = spdk_bdev_open(bdev, true, nbd_bdev_hot_remove, nbd, &nbd->bdev_desc);
	rc = spdk_bdev_open_ext(bdev_name, true, nbd_bdev_event_cb, nbd, &nbd->bdev_desc);
	if (rc != 0) {
		SPDK_ERRLOG("could not open bdev %s, error=%d\n", spdk_bdev_get_name(bdev), rc);
		SPDK_ERRLOG("could not open bdev %s, error=%d\n", bdev_name, rc);
		goto err;
	}

	bdev = spdk_bdev_desc_get_bdev(nbd->bdev_desc);
	nbd->bdev = bdev;

	nbd->ch = spdk_bdev_get_io_channel(nbd->bdev_desc);
@@ -1067,7 +1073,7 @@ spdk_nbd_start(const char *bdev_name, const char *nbd_path,
	}

	SPDK_INFOLOG(nbd, "Enabling kernel access to bdev %s via %s\n",
		     spdk_bdev_get_name(bdev), nbd_path);
		     bdev_name, nbd_path);

	nbd_enable_kernel(ctx);
	return;