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

This is a drop-in replacement.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I3c297b6676b53bae8a308d5732800ac05c4cebc7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4724
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Shuhei Matsumoto 2020-10-15 07:54:33 +09:00 committed by Tomasz Zawadzki
parent 83b57c54da
commit 5885a8ab43

View File

@ -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;