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:
parent
83b57c54da
commit
5885a8ab43
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user