From 779a6bdf82e3746036503c715770799b038ebce7 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 9 Oct 2020 05:23:35 +0900 Subject: [PATCH] bdev/compress: Replace spdk_bdev_open() by spdk_bdev_open_ext() This patch is just a drop-in replacement. Signed-off-by: Shuhei Matsumoto Change-Id: Iffb253ba3a46f03f9927c4ba4206376509cbb5fc Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4566 Tested-by: SPDK CI Jenkins Reviewed-by: Paul Luse Reviewed-by: Aleksey Marchuk Reviewed-by: Tomasz Zawadzki Community-CI: Mellanox Build Bot --- module/bdev/compress/vbdev_compress.c | 35 ++++++++++++++------- test/unit/lib/bdev/compress.c/compress_ut.c | 6 ++-- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/module/bdev/compress/vbdev_compress.c b/module/bdev/compress/vbdev_compress.c index 55a9b6298..4377b1c33 100644 --- a/module/bdev/compress/vbdev_compress.c +++ b/module/bdev/compress/vbdev_compress.c @@ -1258,12 +1258,10 @@ bdev_hotremove_vol_unload_cb(void *cb_arg, int reduce_errno) spdk_bdev_unregister(&comp_bdev->comp_bdev, NULL, NULL); } -/* Called when the underlying base bdev goes away. */ static void -vbdev_compress_base_bdev_hotremove_cb(void *ctx) +vbdev_compress_base_bdev_hotremove_cb(struct spdk_bdev *bdev_find) { struct vbdev_compress *comp_bdev, *tmp; - struct spdk_bdev *bdev_find = ctx; TAILQ_FOREACH_SAFE(comp_bdev, &g_vbdev_comp, link, tmp) { if (bdev_find == comp_bdev->base_bdev) { @@ -1273,6 +1271,21 @@ vbdev_compress_base_bdev_hotremove_cb(void *ctx) } } +/* Called when the underlying base bdev triggers asynchronous event such as bdev removal. */ +static void +vbdev_compress_base_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev, + void *event_ctx) +{ + switch (type) { + case SPDK_BDEV_EVENT_REMOVE: + vbdev_compress_base_bdev_hotremove_cb(bdev); + break; + default: + SPDK_NOTICELOG("Unsupported bdev event: type %d\n", type); + break; + } +} + /* TODO: determine which parms we want user configurable, HC for now * params.vol_size * params.chunk_size @@ -1355,8 +1368,8 @@ vbdev_init_reduce(struct spdk_bdev *bdev, const char *pm_path, uint32_t lb_size) return -EINVAL; } - rc = spdk_bdev_open(meta_ctx->base_bdev, true, vbdev_compress_base_bdev_hotremove_cb, - meta_ctx->base_bdev, &meta_ctx->base_desc); + rc = spdk_bdev_open_ext(spdk_bdev_get_name(meta_ctx->base_bdev), true, + vbdev_compress_base_bdev_event_cb, NULL, &meta_ctx->base_desc); if (rc) { SPDK_ERRLOG("could not open bdev %s\n", spdk_bdev_get_name(meta_ctx->base_bdev)); free(meta_ctx); @@ -1618,8 +1631,8 @@ vbdev_compress_claim(struct vbdev_compress *comp_bdev) pthread_mutex_init(&comp_bdev->reduce_lock, NULL); - rc = spdk_bdev_open(comp_bdev->base_bdev, true, vbdev_compress_base_bdev_hotremove_cb, - comp_bdev->base_bdev, &comp_bdev->base_desc); + rc = spdk_bdev_open_ext(spdk_bdev_get_name(comp_bdev->base_bdev), true, + vbdev_compress_base_bdev_event_cb, NULL, &comp_bdev->base_desc); if (rc) { SPDK_ERRLOG("could not open bdev %s\n", spdk_bdev_get_name(comp_bdev->base_bdev)); goto error_open; @@ -1752,8 +1765,8 @@ _vbdev_reduce_load_cb(void *ctx) /* We still want to open and claim the backing device to protect the data until * either the pm metadata file is recovered or the comp bdev is deleted. */ - rc = spdk_bdev_open(meta_ctx->base_bdev, true, vbdev_compress_base_bdev_hotremove_cb, - meta_ctx->base_bdev, &meta_ctx->base_desc); + rc = spdk_bdev_open_ext(spdk_bdev_get_name(meta_ctx->base_bdev), true, + vbdev_compress_base_bdev_event_cb, NULL, &meta_ctx->base_desc); if (rc) { SPDK_ERRLOG("could not open bdev %s\n", spdk_bdev_get_name(meta_ctx->base_bdev)); free(meta_ctx->comp_bdev.name); @@ -1838,8 +1851,8 @@ vbdev_compress_examine(struct spdk_bdev *bdev) return; } - rc = spdk_bdev_open(meta_ctx->base_bdev, false, vbdev_compress_base_bdev_hotremove_cb, - meta_ctx->base_bdev, &meta_ctx->base_desc); + rc = spdk_bdev_open_ext(spdk_bdev_get_name(meta_ctx->base_bdev), false, + vbdev_compress_base_bdev_event_cb, NULL, &meta_ctx->base_desc); if (rc) { SPDK_ERRLOG("could not open bdev %s\n", spdk_bdev_get_name(meta_ctx->base_bdev)); free(meta_ctx); diff --git a/test/unit/lib/bdev/compress.c/compress_ut.c b/test/unit/lib/bdev/compress.c/compress_ut.c index c4b4e279d..0169df359 100644 --- a/test/unit/lib/bdev/compress.c/compress_ut.c +++ b/test/unit/lib/bdev/compress.c/compress_ut.c @@ -274,9 +274,9 @@ DEFINE_STUB(spdk_bdev_get_name, const char *, (const struct spdk_bdev *bdev), 0) DEFINE_STUB(spdk_bdev_get_io_channel, struct spdk_io_channel *, (struct spdk_bdev_desc *desc), 0); DEFINE_STUB_V(spdk_bdev_unregister, (struct spdk_bdev *bdev, spdk_bdev_unregister_cb cb_fn, void *cb_arg)); -DEFINE_STUB(spdk_bdev_open, int, (struct spdk_bdev *bdev, bool write, - spdk_bdev_remove_cb_t remove_cb, - void *remove_ctx, struct spdk_bdev_desc **_desc), 0); +DEFINE_STUB(spdk_bdev_open_ext, int, (const char *bdev_name, bool write, + spdk_bdev_event_cb_t event_cb, + void *event_ctx, struct spdk_bdev_desc **_desc), 0); DEFINE_STUB(spdk_bdev_module_claim_bdev, int, (struct spdk_bdev *bdev, struct spdk_bdev_desc *desc, struct spdk_bdev_module *module), 0); DEFINE_STUB_V(spdk_bdev_module_examine_done, (struct spdk_bdev_module *module));